我想知道是否存在要解決在像例如以下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"
在您的示例中,字符串中沒有空格。讀者會認爲這是一個要求,這不是問題。但是,如果你想要一個更一般的解決方案,現在是時候這樣說了(通過編輯,給出你給出的字符串以及你想要提取的字符串的附加例子)。 –
我有一個字母與字母和整數結合,我想分裂它。問題是它互相關閉,很難分裂,我不想計算每個字符串元素。 –