-1

可能重复:
如何在 perl 中连接两个子字符串

如何找到与用户输入的字符索引相对应的字符串数组的子字符串?

例如:如果有一个字符串,如果用户输入位置为 6 和 10,现在$string = 'MFHYRAKCLAMSCTLPHCAKNDHGCTH';它被分解为数组,那么如何搜索并连接两个对应的子字符串?@string = ( "MFHYRA","KCLAM", "SCTLP", "HCAKNDHGCTH" ) ;A

4

1 回答 1

1

本质上,您要问的是:我们在初始字符串中有一个位置。字符串被拆分为子字符串。位置在哪个子串中?

假使,假设

@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得到它的子字符串的最后一个元素之后中断操作,但是对于几个位置为用户输入这并不重要。

于 2012-10-15T09:08:33.813 回答