首页 > 解决方案 > 通过在 perl 中保留零从给定字符串中删除标点符号

问题描述

我正在尝试使用以下命令从 perl 中的给定字符串中删除标点符号

      perl -le '$x=19.10 ; $x=~s/[[:punct:]]//g; print $x'

这给出的输出为:191

它从输入中删除尾随 0。我也想保留。

对于其他数字,它成功返回所有值,例如:

      perl -le '$x=19.11 ; $x=~s/[[:punct:]]//g; print $x'

这给出的输出为:1911

在第一种情况下如何保留尾随 0?

标签: regexperl

解决方案


您将数字19.10000000000000142108547152020037174224854(最接近十九和十分之一的浮点数)分配给$x. 然后,您继续对该数字进行字符串化,给出字符串19.1。从此,您删除了.give 191

你可以使用

my $x = "19.10"; $x =~ s/[[:punct:]]//g;

或者

my $x = 19.10; $x *= 100;

推荐阅读