我有以下字符串:
705 veliký big, great, large 707 čistý clear, clean 710 vnitřní inner, internal
我想在每个号码前插入换行符,但仍然保留号码。像这样:
705 veliký big, great, large
707 čistý clear, clean
710 vnitřní inner, internal
我在String.split(/regex/)
找到的所有内容总是抛弃匹配的模式。但在这种情况下,我想保留它。
我很高兴在Ruby或Textmate中这样做,但我在每个问题上都有同样的问题。匹配的模式将替换为回车符。
答案 0 :(得分:4)
您在这里寻找的是positive lookahead:
"705 veliký large 707 čistý, clean 710 vnitřní internal".split(/ (?=\d)/)
#⇒ ["705 veliký large", "707 čistý, clean", "710 vnitřní internal"]
要获得带回车符的字符串,只需join("\n")
上面的结果。
答案 1 :(得分:0)
你可以使用这样的大括号来保持split-regex的内容:
s = '705 veliký big, great, large 707 čistý clear, clean 710 vnitřní inner, internal'
puts s.split(/(\d+)/)
(错误)结果将是:
705
veliký big, great, large
707
cistý clear, clean
710
vnitrní inner, internal
在每个数字之前和之后完成拆分。
所以我建议先做一个gsub
:
puts s.gsub(/(\d+)/, "\n\\1")
<强>注意!强>
gsub
的结果再次是一个字符串(带换行符),split
返回一个数组(没有换行符)!结果代码中的换行符由puts
命令生成。