String 查找具有字符索引的子字符串

String 查找具有字符索引的子字符串,string,perl,join,String,Perl,Join,可能重复: 如何找到对应于用户输入的字符索引的字符串数组的子字符串 例如:如果有一个字符串$string='MFHYRAKCLAMSCTLPHCAKNDHGCTH'

可能重复:

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


例如:如果有一个字符串
$string='MFHYRAKCLAMSCTLPHCAKNDHGCTH'@string=(“MFHYRA”、“KCLAM”、“SCTLP”、“HCAKNDHGCTH”)
现在,如果用户输入A的位置为6和10,那么如何搜索和连接两个相应的子字符串?

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

假定

@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" ;
}
my$n=0;#当前位置
我的%结果;
foreach my$ss(@子字符串){
$n+=长度($ss);
foreach我的$p(@pos){
如果(!$results{$p}和$p<$n){$results{$p}=$ss;}
}
}
foreach我的$p(@pos){
打印“位置$p,子字符串$results{$p}\n”;
}

显然,此代码可以使用一些优化,例如,如果我们已经为
@pos
的元素设置了子字符串,则无需在这些元素上循环,并且应该在
@pos
的最后一个元素获得其子字符串后中断操作,但对于为用户输入的一些职位,这并不重要。

1)请展示您迄今为止所做的尝试。2) 问题不清楚,;您想要什么输出?3) 这是不正确的:
@string={“MFHYRA”、“KCLAM”、“SCTLP”、“HCAKNDHGCTH”}。大括号表示散列引用。用括号代替。这个问题似乎和@mttrb有关,但它们似乎并没有关系,它们是完全一样的。事实上是同一个用户。只是为了解释为什么这很难理解:搜索字符串意味着什么?你在找什么?如果用户输入6和10作为
A
的位置,则您已经知道
A
的位置。你只是想连接包含第6个和第10个字符的字符串吗?@dan1111:1)我试图找到那些与用户输入的
A
位置相对应的子字符串看看这个(我在这里使用不同的字符串),但它工作不正常。2) 在输出中,我希望前两个子串对应于A(比如4和8)的位置。