[英]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.