加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Perl6中将字符串拆分为相等部分的最简单方法

发布时间:2020-12-15 23:32:55 所属栏目:大数据 来源:网络整理
导读:在Perl6中是否有一种优雅的方式将字符串拆分成相等的部分,例如,它是在Power Shell中实现的?在PowerShell中: 'abcdefghijklmnopqrstuvwxyz' -split '(.{8})' 结果: abcdefghijklmnopqrstuvwxyz 在Perl6的官方文档中有很多愚蠢的分割,没有一个最简单有效.建
在Perl6中是否有一种优雅的方式将字符串拆分成相等的部分,例如,它是在Power Shell中实现的?在PowerShell中:

'abcdefghijklmnopqrstuvwxyz' -split '(.{8})'

结果:

abcdefgh
ijklmnop
qrstuvwx
yz

在Perl6的官方文档中有很多愚蠢的分割,没有一个最简单有效.建议?

解决方法

它不会出现在 .split的文档中,因为它是您要找的 .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,但它通常用于删除拆分字符.当你要求它保留它们时,它会为分裂字符返回一个Match对象.

.say for 'abcdefghijklmnopqrstuvwxyz'.split( /. ** 1..8/,:v,:skip-empty )

(因为正则表达式匹配我们要查找的内容,所以:skip-empty用于删除“它们之间”的空的不匹配字符串.)

?abcdefgh?
?ijklmnop?
?qrstuvwx?
?yz?

它也可以在正则表达式上使用:global /:g选项完成,但它也返回Match个对象.

.say for 'abcdefghijklmnopqrstuvwxyz' ~~ m :global / . ** 1..8/
?abcdefgh?
?ijklmnop?
?qrstuvwx?
?yz?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读