1

同じ文に3つの文字列があるかどうかを確認しています。

たとえば、 1960 年 11 月 4 日に生まれた Barack という文。この文では、string1 は Barack Obama です。string2 は、string3 で生まれました。

私の考えは、string1、string2、および string3 の間にピリオド (".") がないかどうかを確認することです。3 つの文字列が同じ文にあると考えられます。

しかし、1970 年 4 月 2 日に生まれた Mr.smith と mrs.smith のような文章になることもあります。

period(".") をチェックするだけでは、私のアプローチは失敗します。同じ文にある 3 つの文字列をチェックする他の方法があるかどうか誰かが私に提案できますか?

4

2 に答える 2

1

コメントで述べたように、を使用しますBreakIterator。それはあなたにとって正しいことをします。

BreakIterator i=BreakIterator.getSentenceInstance(Locale.US);
final String text = "Mr. smith and mrs.smith both born on April 2 1970. Barack born on November 4 1960.";
i.setText(text);
for(int s=i.first(), e=i.next(); e>=0; s=e, e=i.next())
{
  System.out.println("Sentence: from "+s+" to "+e+" \""+text.substring(s, e)+'"');
}

文の境界がわかったら、見つかった文字列の位置をそれと一致させる方法を知る必要があります。

于 2013-10-25T12:29:56.370 に答える