我有一个这样的字符串:
"com.abcd.efghi.pay.0.99"
"com.abcd.efghi.pay.9.99"
"com.abcd.efghi.pay.19.99"
我想得到这个数字(0.99,9.99,99.99)。我试着这样做:
"com.abcd.efghi.pay.0.99".scan(/\d/).join
=> "099"
任何人都可以帮助我获得正确的结果。提前谢谢!
答案 0 :(得分:2)
"com.abcd.efghi.pay.0.99".split(/\D+/, 2).last # => "0.99"
"com.abcd.efghi.pay.9.99".split(/\D+/, 2).last # => "9.99"
"com.abcd.efghi.pay.19.99".split(/\D+/, 2).last # => "19.99"
或
"com.abcd.efghi.pay.0.99".sub(/\D+/, "") # => "0.99"
"com.abcd.efghi.pay.9.99".sub(/\D+/, "") # => "9.99"
"com.abcd.efghi.pay.19.99".sub(/\D+/, "") # => "19.99"
答案 1 :(得分:1)
你可能想要这样的东西:
\d+(\.\d+)?
查找整数,后跟可选的小数部分。
答案 2 :(得分:1)
这样的事情:
"com.abcd.efghi.pay.0.99".scan(/(\d+[.]\d+)/).flatten.first
# => "0.99"
答案 3 :(得分:1)
这非常简单,regexp适用于0.00
或00.00
等数字:
\d{1,2}.{2,}
\d
任意数字\d{1,2}
数字1到2之间.
点\d{2,}
2个或更多数字示例:
>> "com.abcd.efghi.pay.19.99"[/\d{1,2}.{2,}/, 0]
=> "19.99"
>> "com.abcd.efghi.pay.9.99"[/\d{1,2}.{2,}/, 0]
=> "9.99"
答案 4 :(得分:1)
没有正则表达式:
str = "com.abcd.efghi.pay.0.99"
str.split(".").last(2).join(".") # => "0.99"
答案 5 :(得分:0)
您可以在scan
中使用此正则表达式:
\b\d+(?:\.\d+)?
答案 6 :(得分:0)
您需要使用行结束锚。
\b\d+(?:\.\d+)?$
答案 7 :(得分:0)
str = "com.abcd.efghi.pay.9.99"
str[str.index(/\d/)..-1] #=> "9.99"
str.sub(/.*?(?=\d)/,'') #=> "9.99"