如何在双引号中基于逗号而不是逗号拆分字符串

时间:2018-09-17 04:36:09

标签: perl6

我想基于逗号分割此字符串,而不是基于双引号"中的逗号:

my $str = '1,2,3,"4,5,6"';
.say for $str.split(/','/) # Or use comb?

输出应为:

1
2
3
"4,5,6"

3 个答案:

答案 0 :(得分:11)

使用comb

快速解决方案,不带"也不带,的东西 或带引号的字符串

my $str = '1,2,3,"4,5,6",7,8';
.say for $str.comb: / <-[",]>+ | <["]> ~ <["]>  <-["]>+ / ;

答案 1 :(得分:10)

如@melpomene所建议,也可以使用Text::CSV模块。

use Text::CSV;

my $str = '123,456,"78,91",abc,"de,f","ikm"';
for csv(in => csv(in => [$str], sep_char => ",")) -> $arr {
   .say for @$arr;
}

哪个输出:

123
456
78,91
abc
de,f
ikm

答案 2 :(得分:1)

这可能有帮助:

controlView

输出:

my $str = ‘1,2,3,"4,5,6",7,8’;

for $str.split(/ \" \d+ % ',' \"/, :v) -> $l {
  if $l.contains('"') {
    say $l.Str;
  } else {
    .say for $l.comb(/\d+/);
  }
}