从数组中删除特定字符

时间:2019-03-05 03:32:58

标签: regex perl

如何使用Perl从一行中的数组元素中删除特定字符?

示例:-

在此数组中,必须删除特殊字符'

@names = ("'Tom'","'Jerry'");

预期输出:-

Tom
Jerry

3 个答案:

答案 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