当前位置: 首页 > 知识库问答 >
问题:

在分裂重叠上分裂[拉库]

潘高洁
2023-03-14
use v6.d;   # 2020.01 release

my $s = "L1:C1\tL1:C2\tL1:C3\nL2:C1\tL2:C2\tL2:C3\nL3:C1\tL3:C2\tL3:C3";

say $s.split(/\n/).split(/\t/).raku;
("L1:C1", "L1:C2", "L1:C3 L2:C1", "L2:C2", "L2:C3 L3:C1", "L3:C2", "L3:C3").Seq
("L1:C1", "L1:C2", "L1:C3", "L2:C1", "L2:C2", "L2:C3", "L3:C1", "L3:C2", "L3:C3").Seq

只是为了澄清事情,我知道正确的代码是:

$s.split(/\n/)>>.split(/\t/).flat.raku

但我的问题是关于“错误”代码的内部工作。拉库是怎么得出那个结果的?

共有1个答案

柯伟志
2023-03-14

你正在拆分第一个拆分的结果,这是一个列表;split方法会强制调用任何字符串,然后拆分它。列表将(通过其str方法)字符串化到由单个空格分隔的成员。这就是为什么一些得到的字段有两个L和C对,中间有一个空格的原因。

这将得到您想要的结果:

say "L1:C1\tL1:C2\tL1:C3\nL2:C1\tL2:C2\tL2:C3\nL3:C1\tL3:C2\tL3:C3"
    .split("\n")
    .map( *.split( "\t" ).Slip )

因为它拆分第一个拆分的结果,然后将其转换为滑块,以使其滑入更宽的数组。

 类似资料:
  • 我试图了解是如何工作的,以及拆分器是如何设计的。我认识到可能是更重要的方法之一,但是当我看到一些第三方实现时,有时我看到他们的拆分器无条件地为返回null。 问题: 普通迭代器和无条件返回null的拆分器有何不同?这样的分裂者似乎违背了分裂的目的

  • 本文向大家介绍SQL 分裂,包括了SQL 分裂的使用技巧和注意事项,需要的朋友参考一下 示例 使用字符分隔符拆分字符串表达式。请注意,这STRING_SPLIT()是一个表值函数。 结果:            

  • 如果我想在Flink中分裂一个流,那么最好的方法是什么?

  • 在第二种聚合物的情况下,它将是'b'而不是'a'。当然,如果选择了最终的聚合物,则翻转的定义如下 A[127]=2*A[126]+A[127] 需要注意的是,由于翻转,位置将改变为2、0或-2。 不管怎么说,现在我的问题是,平衡距离比应该的要高得多。理想情况下,我被告知它应该是0,或者最大可能是2和4。比这更大的可能性是微乎其微的。但我的代码经常给出22、30等值。谁能告诉我怎么了?请随时要求进一

  • 我使用preg_split正则表达式将句子拆分成数组。我能够成功地做到这一点。然而,我告诉preg_replace查找的模式的一部分是文本本身的一部分。所以部分文字也被删除了。有没有办法把模式重新插入数组?例如,如果我告诉preg_spit搜索一个句点和其后的一个大写字母,它将从数组中删除这个大写字母,这是我不想要的。 这是代码: 示例字符串: 这是第一句。这是第二句吗?这是第三句!这是第四句:这

  • QSplitter 实质上是一个窗口部件,但同时它可以包含一些其他窗口部件。在切分窗口(splitter)中的这些窗口部件会通过切分条(splitter handle)而分隔开来。用户可以 通过拖动这些切分条来改变切分窗口中子窗口部件的尺寸。切分窗口常常可以用作布局管理 器的替代,从而可以把更多的控制权交给用户。 11.5.1使用方法 大家知道,QSplitter 是一个容器类,Qt Design