考虑到ruby代码:
"aaaa\nbbbb\n\n".split(/\n/)
这将产生:
["aaaa", "bbbb"]
我希望输出包含由\n\n
表示的空白行——我希望结果是:
["aaaa", "bbbb", ""]
获得准确结果的最简单/最好的方法是什么?
考虑到ruby代码:
"aaaa\nbbbb\n\n".split(/\n/)
这将产生:
["aaaa", "bbbb"]
我希望输出包含由\n\n
表示的空白行——我希望结果是:
["aaaa", "bbbb", ""]
获得准确结果的最简单/最好的方法是什么?
我建议用lines
而不是split
来完成这个任务.lines
将保留尾随换行符,允许您查看所需的空行.使用chomp
清理:
"aaaa\nbbbb\n\n".lines.map(&:chomp)
[
[0] "aaaa",
[1] "bbbb",
[2] ""
]
其他更复杂的方法有:
"aaaa\nbbbb\n\n".split(/(\n)/).each_slice(2).map{ |ary| ary.join.chomp }
[
[0] "aaaa",
[1] "bbbb",
[2] ""
]
它利用了在split
中使用一个捕获组的优势,该捕获组返回被分割的文本,中间的文本被分割.each_slice
然后将元素分组为两个元素子array.map
获取每个两元素子数组,join
之后是chomp
.
或者:
"aaaa\nbbbb\n\n".split(/(\n)/).delete_if{ |e| e == "\n" }
[
[0] "aaaa",
[1] "bbbb",
[2] ""
]
以下是split
的回报:
"aaaa\nbbbb\n\n".split(/(\n)/)
[
[0] "aaaa",
[1] "\n",
[2] "bbbb",
[3] "\n",
[4] "",
[5] "\n"
]
我们看不到这种方法经常使用,但它可能很有用.