【发布时间】:2017-12-01 12:01:22
【问题描述】:
我们有代码,其中输入可以是单个值或逗号分隔值。我们需要删除每个值前后存在的所有空格。
我们的做法如下:
my @var_1 = split /,/,$var;
print "print_1 : @var_1 \n ";
@var_1 = grep {s/^\s+|\s+$//g; $_ } @var_1;
print "print_2 : @var_1 \n ";
$var 将包含输入值。如果 $var 为 0 ,则 print_1 打印值 0 但 print_2 不打印任何内容。我们的要求只是删除值 0 之前和之后的空格。但是如果 $var 为 1,则 print(print_1 和 print_2)都正确打印值 1。如果我们将输入作为 1,0,它将删除 0 并打印值 1在 print_2 中。
我不确定它为什么要删除值 0。是否可以对替换运算符进行任何更正以不删除值 0 ?
提前致谢!!!
【问题讨论】:
-
我认为您想使用
map,而不是grep,但请参阅我的答案,以获得更简单的方法,完全避免map/grep。 -
如果您想改进您的 Perl,请将您的完整程序发布到 Code Review。如果你愿意,我有几句话要给你。
标签: perl