我想知道是否有一种快速解决红宝石问题的方法,例如下面的例子
示例 “t12”=> text =“t”,value = 12
“ad15”=> text =“ad”,value = 15
“acbds1687”=> text =“acbds”,value = 1687
我认为正则表达式可以解决这个问题,但我不确定正则表达式。
答案 0 :(得分:2)
如下所示:
irb(main):001:0> "t12".split(/(?<=[a-zA-Z])(?=\d)/)
=> ["t", "12"]
答案 1 :(得分:2)
如果您创建一个捕获组,它将保留在拆分中,因此这段代码很漂亮:
text, value = string.split(/(\d+)/)
或者你可以使用切片!方法:
text = 'sagasg125512'
value = text.slice!(/\d+/)
p text #=> "sagasg"
p value #=> "125512"
答案 2 :(得分:1)
将字符串解析为{ :text => "t", :value => 12 }
:
def parse (string)
matchdata = string.match(/([a-zA-Z]+)([\d]+)/)
text = matchdata[1]
value = matchdata[2].to_i
return { text: text, value: value }
end
将字符串解析为["t", 12]
:
def parse (string)
matchdata = string.match(/([a-zA-Z]+)([\d]+)/)
text = matchdata[1]
value = matchdata[2].to_i
return [text, value]
end