2013-10-25 25 views
1

我正在檢查3個字符串是否位於同一個句子中。檢查3個字符串是否位於同一個句子中--Java

例如句子奧巴馬出生於11月4日1960年 在這個句子string1爲奧巴馬 string2爲出生於 STRING3是1960年11月4日

我的想法是,以檢查是否存在無期(「。」)在string1,string2和string3之間,我可以相信位於同一句子中的3個字符串。

但有時一句話就像是史密斯先生和4月2日1970年

史密斯太太都出生,如果我只是檢查期間(「」)我的方法失敗。有人可以建議我有沒有其他方法來檢查位於同一個句子中的3個字符串?

+3

什麼是'最滿意'?但不管,爲什麼你不檢查a)是否是字符串1? b)是string2? c)是string3?如果所有3個都是'真的',那麼所有3個都在那裏...... – iluxa

+2

@iluxa'fullstop'是他們在學校教過的'作爲句子結尾'。' –

+0

哦,我明白了。 @ user12345,你現在在做什麼來檢查string1在句子中? – iluxa

回答

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)+'"'); 
} 

一旦知道了句子的邊界,就應該知道如何將找到的字符串位置與它匹配​​。

+0

不錯的一個,從來沒有聽說過這個類,但它似乎很棒! – Korgen

+0

這是我的問題的正確解決方案 – user2814979

+0

嗨,BreakIterator將文本分割成有邊界的句子,邊界的範圍從0到n ......但是我的字符串有字節的開始和結束索引。所有的字符串文件索引範圍從0到30k或4ok(取決於文件大小)字節大小。我如何檢查這3個字符串的開始和結束索引是否找到一個相同的有效句子(其中有邊界) – user2814979

0
String[] toCheck = new String[] { ... }; 
String sentence = "....."; 
Boolean allFound = true; 
for (String s : toCheck) { 
    if (sentence.indexOf(s) == -1) { 
     allFound = false; 
    } 
} 
+0

這段代碼對於檢查句子是否包含3個字符串或不是很有效。但我的問題是不同的。我有3個字符串,包括開始和結束索引。然後我去閱讀一個文件位於3個字符串中,然後檢查位於同一句子中的這3個字符串 – user2814979

+0

任何使用布爾代替布爾代替的原因是什麼? – Holger

相關問題