【发布时间】:2012-05-17 15:51:07
【问题描述】:
我有一个字符串,它是一本书的片段(大约 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 (
非常感谢任何其他建议,以及实现它的实际代码。
类似的问题: Here
更新:
虽然在我的优先级列表中并不高,因为我的书不包含很多直接引语或直接演讲,但处理其中的句子的规则也是有序的,这样来自同一个 qoute 的句子就不会出现在换行
【问题讨论】:
-
那你的句子不都是以短词开头的吗?我希望此评论中的两个句子都算作句子,但它们都不是以长于两个字符的单词开头的。
-
(另外,考虑以问号结尾的问题,以及句号后面可能有双引号的演讲。)
-
你将如何处理所有的缩写、直接引语或省略号?例如,句子:'Dr.史密斯问:“你好吗?”,但我暂时没有回答。
-
谢谢,这是一个错字。我想说在点之前而不是之后(我知道这会使某些句子不起作用。但它们中的大多数不会以 2 个字符或更短的单词结尾)
-
这个线程看起来很有希望:stackoverflow.com/questions/4373612/…