2012-05-01 135 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.