我有一个基本上包含段落的字符串。可能会有换行符。 现在我想只得到字符串中的第一句话。 我以为我会尝试
indexOf(". ")
这是一个带空格的点。
问题在于,这不会在firstName. LastName
等行上发挥作用。
我正在使用.Net。有没有一个很好的方法来实现这一目标? 我还标记Java,看看我是否可以缩小搜索范围。
答案 0 :(得分:2)
您需要的是自然语言分析(NLP)工具包。自己写一个很难,因为它需要大量的研究和数据收集,但幸运的是它已经为你完成了。
<强> .NET 强>
SharpNLP是用C#编写的自然语言处理工具的集合。目前它提供以下NLP工具:
- 句子分割器
- ...
<强>爪哇强>
答案 1 :(得分:2)
你需要以某种方式标记句子的结尾。正如你已经注意到的那样“。”不这样做,因为它可以不同的方式使用(“嗨,我的名字是Pudelhund先生。”)。如果可能的话,我会建议使用一些不会使用的标志。
编辑:其他method也很好,但更复杂。如果你不能编辑你正在使用的字符串,那么该方法胜过我的;)
答案 2 :(得分:2)
这可以通过String.substring()
使用非常简单的实现String example = "Hello world. This is example. " ;
System.out.print(example.substring(0, example.indexOf(".")+1)); // --> Hello world.