如果我有像
这样的字符串6d7411014f
我想读取前两个整数的出现,并将最终的数字放在一个变量
中根据以上示例,我的变量将包含67
更多例子:
d550dfe10a
变量为55
我尝试的是\d
,但这给了我6.如何获得第二个号码?
答案 0 :(得分:6)
我会使用scan
来做这类事情:
n = my_string.scan(/\d/)[0,2].join.to_i
如果没有两个数字,你必须决定你想做什么。
例如:
>> '6d7411014f'.scan(/\d/)[0,2].join.to_i
=> 67
>> 'd550dfe10a'.scan(/\d/)[0,2].join.to_i
=> 55
>> 'pancakes'.scan(/\d/)[0,2].join.to_i
=> 0
>> '6 pancakes'.scan(/\d/)[0,2].join.to_i
=> 6
参考文献:
答案 1 :(得分:5)
我真的无法在Ruby中完全回答这个问题,但正则表达式是:
/^\D*(\d)\D*(\d)/
然后你必须连接$1
和$2
(或者在Ruby中调用的任何东西)。
答案 2 :(得分:0)
建立sidyll的答案,
string = '6d7411014f'
matched_vals = string.match(/^\D*(\d)\D*(\d)/)
extracted_val = matched_vals[1].to_i * 10 + matched_vals[2].to_i