2012-05-01 87 views
1

我有一個基本上包含段落的字符串。可能會有換行符。 現在我想只得到字符串中的第一個句子。 我想我會嘗試查找段落中的第一句

indexOf(". ") 

是有空間的一個點。

問題是,雖然在諸如firstName. LastName之類的行上這不起作用。

我正在使用.Net。有沒有一種好的方法可以實現這一目標?我也標記Java,看看我是否可以縮小我的搜索範圍。

+0

的indexOf()是你最好的選擇,如果你對自然語言解析不感興趣的話。輸入段落是否有任何限制?就像所有句子以「。」結尾一樣。或者他們也可以結束?和! –

回答

2

你需要的是一個自然語言分析(NLP)工具包。自己寫一篇很難,因爲它需要大量的研究和數據收集,但幸運的是它已經爲你完成了。

.NET

SharpNLP是用C#編寫的自然語言處理工具的集合。目前,它提供了以下NLP工具:

  • 一句分流
  • ...

的Java

2

您需要以某種方式標記句子的結尾。正如你已經注意到的一個「。」沒有這樣做,因爲它可以以不同的方式使用(「嗨,我的名字是普德胡德先生。」)。如果可能的話,我會建議使用一些不會使用的標誌。

編輯:其他method也很好,但方式更復雜。如果您無法編輯您使用的雖然字符串,方法擊敗我的。)

+1

+1爲名稱「Pudelhund」 –

2

這可與使用非常簡單的實現與String.substring()

String example = "Hello world. This is example. " ; 
System.out.print(example.substring(0, example.indexOf(".")+1)); // --> Hello world.