-1

重複の可能性:
perl で 2 つの部分文字列を結合する方法

ユーザーが入力した文字のインデックスに対応する文字列配列の部分文字列を見つけるにはどうすればよいですか?

例: 文字列があり、ユーザーが 6 と 10 の位置を入力$string = 'MFHYRAKCLAMSCTLPHCAKNDHGCTH';すると配列に分割される場合、2 つの対応する部分文字列を検索して結合するにはどうすればよいでしょうか?@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 に答える