如何在Ruby中删除句子之间多余的空格?

如何在Ruby中删除句子之间多余的空格?,ruby,parsing,Ruby,Parsing,我的字符串在句子之间有额外的空格。字符串的目的是让人可读,因此句点和下一个句子的开头之间应该只有两个空格 句子中单词之间的空格应保持为单个空格,多余的空格应删除 在Ruby中如何做到这一点?假设您使用要分隔句子,可以先使用挤压处理单词之间多余的空格,然后在之后添加两个空格使用gsub p = "The first line. The second line! The third line?" p.squeeze(" ").gsub(/([.?!]) */,'\1 ') =&

我的字符串在句子之间有额外的空格。字符串的目的是让人可读,因此句点和下一个句子的开头之间应该只有两个空格

句子中单词之间的空格应保持为单个空格,多余的空格应删除


在Ruby中如何做到这一点?

假设您使用
要分隔句子,可以先使用
挤压
处理单词之间多余的空格,然后在
之后添加两个空格使用
gsub

p = "The first line.    The   second   line! The   third  line?"
p.squeeze(" ").gsub(/([.?!]) */,'\1  ')
=>"The first linee.  The second line!  The third line?  "

(决定性地)这样做是不可能的。如果你想用统计上可能是正确的结果,那么你需要进行自然语言处理;这将需要更多的代码,而不是像这样一个线程的合理答案。描述它远不如提供一个输入和预期输出的示例。您还需要向我们展示一些您尝试过的代码。实际上我更喜欢这种方式。如果您应用了
压缩
,那么将不再有连续的空格。正则表达式中的
*
是多余的;它应该被
替换。您的代码将
Mr.uu-Bean
表示一个空格)转换为
Mr.uu-Bean
转换为
i.\uu-e.\uuuuu
Oh-man…
转换为
Oh-man.\uuuuu.\uuuuu.\uuuuu.\uuuu.\code>@sawa。。是的,我知道这个问题,所以我只能假设句子将被
分割。这种方法无法处理自然语言。非常感谢。我认为这样在大多数情况下都可以解决这个问题。这种情况或憨豆先生可能会在未来出现,但我相信这解决了眼前的问题。我将测试它。