perl - 在 Perl 中分割包含数字的字符串

标签 perl split

我想分割一个字符串(其中有数字)。在下面的示例中,我想在 k 和 k1 处分割字符串。

my @array1=("0","23","1","4","65","7");
$k=1;$k1=0;
my $j=join("",@array1);
my @ar=split(/($k|$k1)/,$j);
print join(";",@ar),"\n\n";

输出为;0;23;1;4657

在上面的输出中,多了一个分号“;”正在打印

预期输出为0;23;1;4657

当我在下面的示例中尝试上述代码时,输​​出是正确的:(0;5;123;4;6);此处不打印额外的分号。

my @array1=("0","5","1234","6");
$k=5;$k1=4;

我不确定,出于什么原因,第一个示例打印了额外的分号“;”

有人可以帮我吗?

最佳答案

不同之处在于,当您围绕第一个字符进行拆分时,您会在开头得到一个空值。因此额外的; 0 之前(以及“”之后)。您也会类似地发现;;当分割两个相邻字符时

所以绝对最简单的修复方法是使用 grep 删除空字符串:

my @ar=split(/($k|$k1)/,$j);
@ar = grep /./, @ar;

这会删除 @ar 中的空字符串。

从更大的角度来看,您可能想看看为什么要连接字符串只是为了将它们重新分开。您还将一个地方的数字进行拆分,而该数字可能会出现在另一个地方。就像 $k=1 和 @array1 = (11, 23, 1, 4);

关于perl - 在 Perl 中分割包含数字的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13224684/

相关文章:

linux - 为什么 fork() 不立即给出正确的 pid?

linux - 使用 tar 命令将文件拆分为特定大小

xml - 使用散列键通过 XML::LibXML 编写 xml 文件时出现编码错误

perl - 我如何查看 Perl 哈希是否已经有某个键?

perl - 我可以设置一个 perl 脚本吗?

java - 如果子字符串可以转换为 int,如何拆分以分隔的字符串

javascript - 字数计数器可以工作,但逗号和句号有问题

arrays - 如何遍历 Perl 中对哈希数组的引用?

java - 如何将 String 数组拆分为单独的 int 和 String 数组?

algorithm - C4.5 为连续属性选择分割点(阈值)