Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中组合段落_Ruby - Fatal编程技术网

在Ruby中组合段落

在Ruby中组合段落,ruby,Ruby,我有一个字符串: “他并不真的认识我,但是那里有一种微弱的认出来。我就是那个带来草莓的女孩。他女儿可能偶尔会提到的女孩。那个五年前站在那里的女孩,和她妈妈挤在一起 姐姐,当他给她,最大的孩子,一枚英勇勋章。一枚给她父亲的勋章,在矿井里蒸发了。他还记得吗?这有什么关系?他粗声粗气地重复着。让她站出来。普里姆在我身后歇斯底里地尖叫。她像老虎钳一样把她瘦小的胳膊搂住了我。” 如何将这两个段落组合成Ruby中的一个大段落?如果您有这样的文本 以前 之后 这意味着有两个换行符,如下所示: 以前 中断 中断

我有一个字符串:

“他并不真的认识我,但是那里有一种微弱的认出来。我就是那个带来草莓的女孩。他女儿可能偶尔会提到的女孩。那个五年前站在那里的女孩,和她妈妈挤在一起

姐姐,当他给她,最大的孩子,一枚英勇勋章。一枚给她父亲的勋章,在矿井里蒸发了。他还记得吗?这有什么关系?他粗声粗气地重复着。让她站出来。普里姆在我身后歇斯底里地尖叫。她像老虎钳一样把她瘦小的胳膊搂住了我。”


如何将这两个段落组合成Ruby中的一个大段落?

如果您有这样的文本

以前

之后

这意味着有两个换行符,如下所示:

以前 中断

中断

之后

所以你要做的是用一个空格来代替两个连续的休息

separated = "before\n\nafter"
combined = separated.gsub(/\n+/, " ")
请注意,这没有任何关于文本结构或段落的上下文

前来救援:

input.squeeze($/)
简单技巧:

> string.split.join(" ")
另一个:

> string.gsub!(/\s+/, ' ')
如果您使用的是Rails,它将提供

> string.squish
注意:以上所有方法都将删除额外的空格和换行符,使其成为单个段落


输出:

#=> "He doesnt know me really, but theres a faint recognition there. I am the girl who brings the strawberries. The girl his daughter might have spoken of on occasion. The girl who five years ago stood huddled with her mother and sister, as he presented her, the oldest child, with a medal of valor. A medal for her father, vaporized in the mines. Does he remember that? What does it matter? he repeats gruffly. Let her come forward. Prim is screaming hysterically behind me. Shes wrapped her skinny arms around me like a vice."

我假设中断是在单词上,因此应该在两个子字符串之间插入空格(而不是说,“…bicy\n\ncle…”)。我还考虑了应该删除的错误空格的可能性

def join_em(str)
  str.gsub(/(?:\s*\n){2,}/, ' ')
end

join_em("The cat is back.\n\nThe dog never left.")
  #=> "The cat is back. The dog never left."
join_em("The cat is back.  \n  \t \nThe dog never left.")
  #=> "The cat is back. The dog never left."

你能总结一下你迄今为止为解决这个问题所做的工作,并描述一下你在解决这个问题时遇到的困难吗?特别是,您可能会发现文档是一个很好的起点。答案包含许多假设,这表明问题不明确。你期望的结果是什么?单词之间总是会出现分裂吗?是否应保留连续空格(或制表符)?你为什么会有这些新词呢?它们从何而来?“我如何将这两个段落组合成Ruby中的一个大段落?”——您可以通过编写一个程序来实现这一点。如果您的程序有问题,请仔细阅读您正在使用的所有方法、类、模块和库的文档,为您的程序编写测试,用笔和纸跟踪执行情况,在调试器中单步执行,然后休眠,从头开始,再次休眠,然后再询问,狭义的问题。您能否提供您希望发生的事情的精确说明,包括任何和所有规则、这些规则的例外情况、拐角情况、特殊情况、边界情况和边缘情况?您能否提供示例输入和输出,以演示在正常情况下,以及在所有异常、拐角情况、特殊情况、边界情况和边缘情况下,您预期会发生什么?请,也提供一个.OP可能是在Windows上,顺便说一句。好的一点。无论如何,字符串挤压似乎更好。也许
/\n+/
@caryswovel是的,这可能更好。但我更喜欢mudasobwa的
挤压版。不知道压缩。OP需要一个大段落,所以我认为换行符应该用空格代替:
分隔。gsub(/\n+/,“”)
。简单有效!如果字符串包含两个或多个相邻的空白字符,则除了一个字符外,其他字符都需要。如果要保留或欢迎编辑,这可能是一个问题。要保留非换行空白,可以使用
string.split(/\n+/).join(“”)
string.gsub(/\n+/,“”)
。这将用一个换行替换两个换行。不确定这是否符合“一个大段落”。@Stefan我投票赞成它被降价:)所有其他行也以
“\n”
结尾。