如何将包含字符串的字符串转换为数组中的换行符,并将这些行转换为元素?
例如,考虑到这一点:
$lines = "line 1\nline 2\nline 3\n";
我想要检索这个:
$lines[0] --> "line 1\n"
$lines[1] --> "line 2\n"
$lines[2] --> "line 3\n"
理想情况下,我想将换行保留在aray元素中。
答案 0 :(得分:7)
您可以使用负面后卫来保留拆分中的换行符:
@lines = split /(?<=\n)/, $lines;
答案 1 :(得分:4)
一种方法是使用split
然后使用map
。
use warnings;
use strict;
my $lines = "line 1\nline 2\nline 3\n";
my @lines = map { "$_\n" } split /\n/, $lines;
答案 2 :(得分:3)
另一种方式,没有split
:
use warnings;
use strict;
my $lines = "line 1\nline 2\nline 3\n";
my @lines = $lines =~ /(.*\n)/g;
答案 3 :(得分:2)
使用split
:
my @lines = split(/\n/m, $lines);
编辑:保留换行符,在评论中提到的/^/m
分割,或使用零宽度后视,如另一个答案中所述。