line = "abcde:abc/abcd=(12, 20)"
,我想12
和20
在数组中。我的解决方案是:
array_line = line[/\(.*?\)/].delete('()').delete(' ').split(",")
有没有更好的方法来解决它使用红宝石?
line = "abcde:abc/abcd=(12, 20)"
,我想12
和20
在数组中。我的解决方案是:
array_line = line[/\(.*?\)/].delete('()').delete(' ').split(",")
有没有更好的方法来解决它使用红宝石?
此,如果你想串
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"]
在这里,我们使用前视和后视仅匹配括号之间的数字。
只是出于好奇:
require 'json'
JSON.parse "[#{'abcde:abc/abcd=(12, 20)'[/(?<=\().*?(?=\))/]}]"
#⇒ [12, 20]
这确实是一个原创的解决方案。大多数人不知道'String#[]'是否支持正则表达式。 – tadman
真棒!如果括号内有逗号和数字会怎么样?像line =“abcde:123,type/onetwothree =(12,20)” –
@YiningTeng更新回答 –