如果我有一个字符串,说:
my $string = "A, B,C, D , E ";
如何在没有前导和尾随空格的情况下将其放入 Perl 中的数组中?所以我想要的只是每个数组元素中的一个字母。我目前做的是这样的:
my @groups = split /,\s*/, $string;
但这显然是不够的,因为尾随空格仍然存在。任何帮助表示赞赏。非常感谢 !!
然后在拆分之前去除前导/尾随空格并匹配拆分表达式中的前导/尾随空格。
my $string = " A, B,C, D , E ";
$string =~ s/^\s+//;
$string =~ s/\s+$//;
my @groups = split /\s*,\s*/, $string;
不过,使用Text::CSV之类的模块可能比尝试自己解析 CSV 更好。
您不必将自己限制为split
,只需使用带有/g
修饰符的匹配即可。
my $string = " A, B,C, D , E ";
my @groups = $string =~ /\s*([^,]+?)\s*,?/g;
干得好:
@groups = split /,/, $string;
#remove whitespace now.
@groups = map { s/^\s+//; s/\s+$//; $_ } @groups;
注意:正则表达式可以简化我很确定,只是还没有解决。
只是为了确保我没有遗漏任何东西,在试图揭开你的例子之后,我想出了这个:
my $string = " A, B,C, D , E ";
$string =~ s/\s+//g;
my @groups = split /,/, $string;
我猜会工作吗?