可能重复:
如何在 perl 中连接两个子字符串
如何找到与用户输入的字符索引相对应的字符串数组的子字符串?
例如:如果有一个字符串,如果用户输入位置为 6 和 10,现在$string = 'MFHYRAKCLAMSCTLPHCAKNDHGCTH';
它被分解为数组,那么如何搜索并连接两个对应的子字符串?@string = ( "MFHYRA","KCLAM", "SCTLP", "HCAKNDHGCTH" ) ;
A
可能重复:
如何在 perl 中连接两个子字符串
如何找到与用户输入的字符索引相对应的字符串数组的子字符串?
例如:如果有一个字符串,如果用户输入位置为 6 和 10,现在$string = 'MFHYRAKCLAMSCTLPHCAKNDHGCTH';
它被分解为数组,那么如何搜索并连接两个对应的子字符串?@string = ( "MFHYRA","KCLAM", "SCTLP", "HCAKNDHGCTH" ) ;
A
本质上,您要问的是:我们在初始字符串中有一个位置。字符串被拆分为子字符串。位置在哪个子串中?
假使,假设
@pos = ( 5, 7, 9 ) ;
是您要为其查找子字符串的位置列表。
my $n = 0 ; # current position
my %results ;
foreach my $ss ( @substrings ) {
$n += length( $ss ) ;
foreach my $p ( @pos ) {
if( ! $results{$p} and $p < $n ) { $results{$p} = $ss ; }
}
}
foreach my $p ( @pos ) {
print "Position $p, substring $results{$p}\n" ;
}
@pos
显然,这段代码可以使用一些优化,例如——如果我们已经有一个子字符串,则不需要循环遍历元素,我们应该在@pos
得到它的子字符串的最后一个元素之后中断操作,但是对于几个位置为用户输入这并不重要。