如何使用Perl从一行中的数组元素中删除特定字符?
示例:-
在此数组中,必须删除特殊字符'
。
@names = ("'Tom'","'Jerry'");
预期输出:-
Tom
Jerry
答案 0 :(得分:4)
字符串文字'Tom'
生成字符串Tom
,字符串文字'Jerry'
生成字符串Jerry
,因此在任何情况下都没有'
该数组的元素。
要将每个元素打印在不同的行上,可以使用以下命令:
say for @names;
它是以下内容的简短版本:
for my $name (@names) {
say $name;
}
这通常不用说,但是使用say
需要使用use feature qw( say );
。
答案 1 :(得分:1)
代码和您的问题不同。 但是查看您想要的输出,我会假设您要加入/打印数组的元素。考虑示例代码:
代码:
@names = ('Tom','Jerry');
my $str = join '\n', @names;
say $str;
输出:
Tom
Jerry
答案 2 :(得分:1)
您可以通过在正则表达式中在字符前面加上斜杠来否定字符的“特殊性”,从而对perl进行更改。因此,该变量的正则表达式可以为s/\'//g
。一个示例如下:
#!/usr/bin/perl
@names=('\'Tom\'','\'Jerry\'');
foreach my $name (@names) {
print "Name is $name\n";
$name =~ s/\'//g;
print "After regex, Name is $name\n";
}
尽管在带有单引号的数组声明中,perl会将其解释为简单的用引号引起来,并且不会将它们包括在输出中。我需要添加单引号的取反来产生以下结果:
Name is 'Tom'
After regex, Name is Tom
Name is 'Jerry'
After regex, Name is Jerry