它应该非常简单,但如果没有list
.comb
,我就无法找到工具。
我有一个$string
和一个(0 < $index < $string.chars - 1
)。我需要制作$new_string
,其编号为$index
的元素将更改为“A”。
my $string = 'abcde';
my $index = 0; # $new_string should be 'Abcde'
my $index = 3; # $new_string should be 'abcAe'
答案 0 :(得分:2)
这是我建议使用的:
my $string = 'abcde';
my $index = 0;
( my $new-string = $string ).substr-rw( $index, 1 ) = 'A';
say $string; # abcde
say $new-string; # Abcde
如果你想远离变异操作:
sub string-index-replace (
Str $in-str,
UInt $index,
Str $new where .chars == 1
){
( # the part of the string before the value to insert
$in-str.substr( 0, $index ) xx? $index
)
~
( # add spaces if the insert is beyond the end of the string
' ' x $index - $in-str.chars
)
~
$new
~
( # the part of the string after the insert
$in-str.substr( $index + 1 ) xx? ( $index < $in-str.chars)
)
}
say string-index-replace( 'abcde', $_, 'A' ) for ^10
Abcde
aAcde
abAde
abcAe
abcdA
abcdeA
abcde A
abcde A
abcde A
abcde A
答案 1 :(得分:1)