分割功能

时间:2013-02-22 13:11:38

标签: perl

我想获得分裂字符。我尝试了以下编码,但我只能获得分割文本。但是,如果拆分字符相同,则应将其作为单个字符返回 例如,如果字符串是“asa,agas,asa”,那么应该返回。 所以在下面的例子中,我应该得到“|:;” (与空间相结合)

use strict;
use warnings;

my $str = "Welcome|a:g;v";
my @value = split /[,;:.%|]/, $str;

foreach my $final (@value) {
    print $final, "\n";
}

5 个答案:

答案 0 :(得分:2)

split在给定分隔这些元素时将字符串拆分为元素,因此split不是您想要的。相反,使用:

my @punctuations = $str =~ /([,;:.%|])/g;

答案 1 :(得分:0)

所以你想得到与分裂相反的

尝试:

my @value=split /[^,;:.%|]+/,$str;

它将拆分任何您设置的分隔符。

通信后的更正:

my @value=split /[^,;:.%|]+/,$str;
shift @value;

答案 2 :(得分:0)

这很好用,并给出了独特的答案

@value = ();
foreach(split('',",;:.%|")) { push @value,$_ if $str=~/$_/; }

答案 3 :(得分:0)

要仅提取一次所有分隔符,您需要更精细的内容

my @punctuations = keys %{{ map { $_ => 1 } $str =~ /[,;:.%|]/g }};

答案 4 :(得分:0)

听起来你称之为“分裂字符”,我们其余人称之为“分隔符” - 如果是这样,POSIX字符类[:punct:]可能会证明是有价值的。

OTOH,如果你有一个已定义的分隔符列表,而你想要做的就是列出字符串中的那些,那么使用m//而不是split会更有效率。