1

我正在检查 3 个字符串是否位于同一个句子中。

例如, Barack 出生于 1960 年 11 月 4 日这个句子。在这句话中,string1 是 Barack Obama,string2 出生在 string3 上,是 1960 年 11 月 4 日

我的想法是检查string1,string2和string3之间是否没有句点(“。”),我可以相信3个字符串位于同一个句子中。

但有时这句话就像史密斯先生和史密斯夫人都出生于 1970 年 4 月 2 日一样。

如果我只是检查 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 回答
0
String[] toCheck = new String[] { ... };
String sentence = ".....";
Boolean allFound = true;
for (String s : toCheck) {
    if (sentence.indexOf(s) == -1) {
        allFound = false;
    }
}
于 2013-10-25T12:04:11.550 回答