2016-05-30 6 views
0

与えられた2つの単語の間に最短の文字列を入れたい。私は2つの単語の間に文字列を得ることができますが、同じ単語が2回あると問題が発生します。2つの単語間の最短文字列を取得するC#

文章:他人と一緒に働いていた人はこちらです。

最後の文字列をここにの間で取得したいと思います。 これは私が現在使用している方法である:

private static string Between(this string value, string a, string b) 
{ 
    int posA = value.IndexOf(a); 
    int posB = value.LastIndexOf(b); 
    if (posA == -1) 
    { 
     return ""; 
    } 
    if (posB == -1) 
    { 
     return ""; 
    } 
    int adjustedPosA = posA + a.Length; 
    if (adjustedPosA >= posB) 
    { 
     return ""; 
    } 
    return value.Substring(adjustedPosA, posB - adjustedPosA); 
} 

何の繰り返しがない場合、この機能は動作します。しかし、この例では、最初の人々とここの間のすべての文字列を返します。最後の人とここで結果をどうやって得ることができますか?私が期待している結果はです。

+2

であなたの質問を正規表現を使用して、あなたの要件

その他のソリューションを明確にしてください。 「2つの短い単語の間の文字列」と「2つの単語の間の最短の文字列」は全く異なるものです。 –

+3

'the'、' who'と 'and'は文中で最短の単語ではありませんか? – DeanOC

+0

@DiligentKeyPresser、質問が更新されました。私の悪い英語を申し訳ありません。 –

答えて

2

使用LastIndexOf両方の単語を探しているときに、その単語の最後の出現箇所が常に見つかるようにします。

int posA = value.LastIndexOf(a); 
    int posB = value.LastIndexOf(b); 

ただし、「これは他の人とここで働いていた人」のために必要なものではありません。そのタイトルが一致しないhttps://stackoverflow.com/a/35105389/101087

関連する問題