我有
line = "abcde:abc/abcd=(12, 20)"
我希望在数组中获得12
和20
。我的解决方案是:
array_line = line[/\(.*?\)/].delete('()').delete(' ').split(",")
有没有更好的方法可以使用ruby来解决它?
答案 0 :(得分:5)
如果你想要一个字符串数组
line.scan(/\d+/) #=> ["12", "20"]
或数字数组
line.scan(/\d+/).map(&:to_i) #=> [12, 20]
根据评论的另一个例子和方法:
line = "abcde:123, type/onetwothree = (12, 20)"
line[/(?<=\()[0-9,\s]+(?=\))/].split(', ') #=> ["12", "20"]
这里我们使用lookahead和lookbehind来匹配括号之间的数字。
答案 1 :(得分:1)
出于好奇:
require 'json'
JSON.parse "[#{'abcde:abc/abcd=(12, 20)'[/(?<=\().*?(?=\))/]}]"
#⇒ [12, 20]
答案 2 :(得分:0)
这个也是一个很好的答案:
line[/\((.*?)\)/, 1].delete(' ').split(",")