如何让Ruby的String Split方法在输出中保留换行符?
Ruby 1.9.2 保留换行符的字符串分割问题
现有如下代码:
thing = "Stuff.\nHello!" result = thing.split(" ") # ^结果为["Stuff.", "Hello!"],尽管分隔符是单个空格而非换行符
如何修改才能让换行符被保留,使result变量等于["Stuff.\n", "Hello!"]?我使用的是Ruby 1.9.2,此需求用于将换行标签替换为换行符的自动换行算法。
解决方法
Ruby里split(" ")是特殊处理的——它会把所有空白字符(包括换行、空格、制表符等)都当作分隔符,所以才会把换行也一并去掉。要只按字面意义的单个空格分割,同时保留换行符,换用正则表达式匹配单个空格即可:
thing = "Stuff.\nHello!" result = thing.split(/ /) # 此时 result 就是 ["Stuff.\n", "Hello!"]
原理很简单:带双引号的空格参数会触发Ruby的“任意空白分割”逻辑,而正则表达式/ /只会匹配字面意义上的单个空格,不会把换行符当作分隔符,这样就能保留原字符串里的换行符了。
如果你的场景中存在连续空格,还可以通过split的第二个参数控制分割次数,不过针对当前需求,上面的方法就完全够用。
内容的提问来源于stack exchange,提问作者Tespy
相关产品推荐
相关产品推荐

