String 如何像Python在Perl 6中那样分割字符串?

String 如何像Python在Perl 6中那样分割字符串?,string,slice,roles,raku,String,Slice,Roles,Raku,在Python中,我可以像这样拼接字符串: solo=一只敏捷的棕色狐狸跳过了懒狗 独奏[3:5] 我知道substr和comb就足够了,但是我想知道这是否可能。我应该使用角色来执行此操作吗?如何分割字符串 字符串(表示为classStr)在Perl 6中被视为单个值,而不是位置数据结构,因此无法使用内置的[]数组索引运算符对其进行索引/切片 正如你已经建议的,或者是一条路要走: my$solo=“一只敏捷的棕色狐狸跳过了懒狗”; dd$solo.comb[3..4]。加入;#“用户界面” d

在Python中,我可以像这样拼接字符串:

solo=一只敏捷的棕色狐狸跳过了懒狗
独奏[3:5]
我知道
substr
comb
就足够了,但是我想知道这是否可能。我应该使用角色来执行此操作吗?

如何分割字符串 字符串(表示为class
Str
)在Perl 6中被视为单个值,而不是位置数据结构,因此无法使用内置的
[]
数组索引运算符对其进行索引/切片

正如你已经建议的,或者是一条路要走:

my$solo=“一只敏捷的棕色狐狸跳过了懒狗”;
dd$solo.comb[3..4]。加入;#“用户界面”
dd$solo.comb[3..^5]。加入;#“用户界面”
dd$solo.substr(3,2)#“用户界面”
dd$solo.substr(3..4)#“用户界面”
dd$solo.substr(3..^5)#“用户界面”
如果要修改切片,请使用:

$solo.substr rw(2..6)=“慢”;
dd$solo;#“一只缓慢的棕色狐狸跳过了懒狗”
如何使运算符
[]
直接在字符串上工作 如果确实需要,可以在字符串中组合一个角色,添加方法,这将使
[]
操作符对其进行操作:

my$solo=“一只敏捷的棕色狐狸跳过了懒狗”但是角色{
方法AT-POS($i){self.substr($i,1)}
}
dd$solo[3..5];(“u”、“i”、“c”)
但是,这将以列表的形式返回切片,因为默认情况下,
[]
操作符就是这样做的。要使其返回串联字符串,必须为类型
Str
重新实现
[]

multi postercircumfix:(Str$string,Int:D$索引){
$string.substr($index,1)
}
多后置循环修复:(Str$string,范围:D$slice){
$string.substr($slice)
}
多后置循环修复:(Str$string,Iterable:D\slice){
slice.map({$string.substr($\ 1)}).join
}
my$solo=“一只敏捷的棕色狐狸跳过了懒狗”;
dd$solo[3];#“u”
dd$solo[3..4];#“用户界面”
dd$solo[3,5]#“加州大学”
您可以扩展此处添加的
[]
多个候选项,以处理操作员提供的列表,如:

  • 从末端索引,例如,
    $solo[*-1]
  • 截断切片,例如,
    $solo[3..*]
  • 副词,例如,
    $solo[3..5]:kv
  • 作业,例如
    $solo[2..6]=“慢”
但要做到这一点需要付出很多努力


另外,请记住,重写内置运算符以执行它们不应该执行的操作,会使其他Perl 6程序员感到困惑,他们将来将不得不检查或使用您的代码。

干得好,老实说,我不会真正重写这些方法。我只是想知道Perl6是否能够实现它。Perl6太棒了!一个更好的办法是使用另一对括号来做这件事(ASCII范围之外的东西就可以了)。