我想知道是否存在要解决在像例如以下Splite字符串为文本和整数
例如 “T12” =>文本=“T”红宝石问题的快速方法,值= 12
“AD15”=>文本= “广告”,值= 15
“acbds1687”=>文本= “acbds”,值= 1687
我想正则表达式可以解决这一点,但我不知道关于正则表达式。
我想知道是否存在要解决在像例如以下Splite字符串为文本和整数
例如 “T12” =>文本=“T”红宝石问题的快速方法,值= 12
“AD15”=>文本= “广告”,值= 15
“acbds1687”=>文本= “acbds”,值= 1687
我想正则表达式可以解决这一点,但我不知道关于正则表达式。
象下面这样:
irb(main):001:0> "t12".split(/(?<=[a-zA-Z])(?=\d)/)
=> ["t", "12"]
真棒:)工作像一个魅力 –
为了解析字符串转换为一个哈希像{ :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
如果您给创建一个捕获组它留在拆分,因此这段代码是非常光滑的:
text, value = string.split(/(\d+)/)
或者您可以使用切片!方法:
text = 'sagasg125512'
value = text.slice!(/\d+/)
p text #=> "sagasg"
p value #=> "125512"
在您的示例中,字符串中没有空格。读者会认为这是一个要求,这不是问题。但是,如果你想要一个更一般的解决方案,现在是时候这样说了(通过编辑,给出你给出的字符串以及你想要提取的字符串的附加例子)。 –
我有一个字母与字母和整数结合,我想分裂它。问题是它互相关闭,很难分裂,我不想计算每个字符串元素。 –