将字符串拆分为文本和整数

时间:2014-02-21 03:59:12

标签: ruby string

我想知道是否有一种快速解决红宝石问题的方法,例如下面的例子

示例 “t12”=> text =“t”,value = 12

“ad15”=> text =“ad”,value = 15

“acbds1687”=> text =“acbds”,value = 1687

我认为正则表达式可以解决这个问题,但我不确定正则表达式。

3 个答案:

答案 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