我有一个字符串:
"10/2+3*3/2-3/2+10"
我需要将其转换为数组:
["10", "/", "2", "+", "3", "*", "3", "/", "2", "-", "3", "/", "2", "+", "10"]
不使用任何宝石。
我正在使用以下代码尝试转换它:
"10/2+3*3/2-3/2+10".scan(/[\d*,+,\-,*,\/]/)
# => ["1", "0", "/", "2", "+", "3", "*", "3", "/", "2", "-", "3", "/", "2", "+", "1", "0"]
输出不是我所期望的。
答案 0 :(得分:4)
"10/2+3*3/2-3/2+10".split(/(\D)/)
#=> ["10", "/", "2", "+", "3", "*", "3", "/", "2", "-", "3", "/", "2", "+", "10"]
答案 1 :(得分:1)
正则表达式中方括号内的逗号被视为逗号。你想要的是模式的结合。
"10/2+3*3/2-3/2+10".scan(/\d+|\+|\*|\/|\-/)
答案 2 :(得分:1)
"10/2+3*3/2-3/2+10".scan(/\d+|./)
#=> ["10", "/", "2", "+", "3", "*", "3", "/", "2", "-", "3", "/", "2", "+", "10"]