繁体   English   中英

在句子末尾添加一个新行字符

[英]Adding a new line character at the end of the sentence

我有一个字符串,它是一本书的一个片段(大约1章)这个字符串都是一行。 我想在每个句子的末尾加上新的一行

我用一个不那么复杂的代码解决了它

text = text.replaceAll("\\.","\\.\n"); //same for ? same for !

当然,这不会产生非常好的结果。 我不需要这个是完美的但更好的我可以让它变得更好。

我想在创建一个新的行字符之前至少检查一下以下内容:

the word before the . is longer then 2 characters
there are no dots before the . in the same "word"
the character before the . is not a number
the character after the dot (and possibly a whitespace after that dot) is not a (

任何其他建议将非常感激,以及将实现它的实际代码。

类似的问题: 这里

更新:

虽然我的优先级列表不高,因为我的书中并没有包含很多直接引用,也没有直接的演讲,但处理内部句子的规则也是有序的,所以来自同一个qoute的句子不会在新行上结束

斯坦福大学的CoreNLP工具包有一个可以进行句子分割的课程。 在这里查看更多。

如果你说new DocumentPreprocessor(new StringReader(s)).iterator() ,其中s是一个包含文本的字符串,它将返回一个句子的迭代器。

请注意,这也会使句子标记化。 如果您希望句子看起来像它开始的方式,您可以只使用此输出作为拆分指南,或运行PTBTokenizer -untok命令(请参阅上面的相同链接)以使每个标记化句子再次看起来正常。

这几乎肯定比您的规则列表更好,因为您的规则没有考虑到许多重要案例。

如果我正确理解了您的要求,请尝试以下方法:

text = text.replaceAll("[^\\.]{1,}\\D\\.\\s?[^\\(]","\\.\n");
String newline = System.getProperty("line.separator");
String yourLine = yourLine.append(newline);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM