在 Perl6 中等分分割字符串的最简单方法
Simplest way to split string on equal parts in Perl6
Perl6 中是否有一种优雅的方法可以将字符串分成相等的部分,例如,它是在 PowerShell 中实现的?在 PowerShell 中:
'abcdefghijklmnopqrstuvwxyz' -split '(.{8})'
结果:
abcdefgh
ijklmnop
qrstuvwx
yz
Perl6 的官方文档有一大堆傻逼split
,没有一个是最简单有效的。建议?
它不会在您正在寻找的 .split
because it is .comb
的文档中。
.say for 'abcdefghijklmnopqrstuvwxyz'.comb: 8
abcdefgh
ijklmnop
qrstuvwx
yz
它也用于使用正则表达式匹配字符串的一部分
.say for 'abcdefg4444hijklmnop4444qrstuvwxyz'.comb: /..\d+../
fg4444hi
op4444qr
您可以将 .comb(Int)
形式视为匹配最多字符数的正则表达式的快捷方式
.say for 'abcdefghijklmnopqrstuvwxyz'.comb: / . ** 1..8 /
abcdefgh
ijklmnop
qrstuvwx
yz
从技术上讲,您可以使用 .split
,但它通常用于删除拆分字符。当您要求它保留它们时,它 returns 一个 Match 用于拆分字符的对象。
.say for 'abcdefghijklmnopqrstuvwxyz'.split( /. ** 1..8/, :v, :skip-empty )
(由于正则表达式匹配我们正在寻找的内容,:skip-empty
用于删除它们之间“不匹配”的空字符串。)
「abcdefgh」
「ijklmnop」
「qrstuvwx」
「yz」
也可以使用正则表达式上的 :global
/:g
选项来完成,但它也是 returns Match 个对象。
.say for 'abcdefghijklmnopqrstuvwxyz' ~~ m :global / . ** 1..8/
「abcdefgh」
「ijklmnop」
「qrstuvwx」
「yz」
Perl6 中是否有一种优雅的方法可以将字符串分成相等的部分,例如,它是在 PowerShell 中实现的?在 PowerShell 中:
'abcdefghijklmnopqrstuvwxyz' -split '(.{8})'
结果:
abcdefgh
ijklmnop
qrstuvwx
yz
Perl6 的官方文档有一大堆傻逼split
,没有一个是最简单有效的。建议?
它不会在您正在寻找的 .split
because it is .comb
的文档中。
.say for 'abcdefghijklmnopqrstuvwxyz'.comb: 8
abcdefgh
ijklmnop
qrstuvwx
yz
它也用于使用正则表达式匹配字符串的一部分
.say for 'abcdefg4444hijklmnop4444qrstuvwxyz'.comb: /..\d+../
fg4444hi
op4444qr
您可以将 .comb(Int)
形式视为匹配最多字符数的正则表达式的快捷方式
.say for 'abcdefghijklmnopqrstuvwxyz'.comb: / . ** 1..8 /
abcdefgh
ijklmnop
qrstuvwx
yz
从技术上讲,您可以使用 .split
,但它通常用于删除拆分字符。当您要求它保留它们时,它 returns 一个 Match 用于拆分字符的对象。
.say for 'abcdefghijklmnopqrstuvwxyz'.split( /. ** 1..8/, :v, :skip-empty )
(由于正则表达式匹配我们正在寻找的内容,:skip-empty
用于删除它们之间“不匹配”的空字符串。)
「abcdefgh」
「ijklmnop」
「qrstuvwx」
「yz」
也可以使用正则表达式上的 :global
/:g
选项来完成,但它也是 returns Match 个对象。
.say for 'abcdefghijklmnopqrstuvwxyz' ~~ m :global / . ** 1..8/
「abcdefgh」
「ijklmnop」
「qrstuvwx」
「yz」