因此对于字符串x1v4xy6
,它应该变为['x',1,'v',4,'xy',6]
最好也可以拆分操作数,因此x+4y-5zy
变为[1,x,+,4,y,-,5,zy]
。
当一个数字超过一位数时,对单个字符进行分割会出现问题。
我试过这个
c= a.split(/(?<=\d)(?=[A-Za-z])/)
然而,它有时会起作用
2x + y + 3z变为[&#34; 2&#34;,&#34; x + y + 3&#34;,&#34; z&#34;]&#34;,3无法正确分割< / p>
1 个答案:
答案 0 :(得分:1)
您应该使用scan代替split:
pattern = /(?:[+-]|[0-9]+|[a-z]+)/
>> '2x+3y-4zy'.scan(pattern)
=> ["2", "x", "+", "3", "y", "-", "4", "zy"]
>> '2x+y+3z'.scan(pattern)
=> ["2", "x", "+", "y", "+", "3", "z"]
注意:+
和-
是字符串或符号,不能单独出现。我认为send
方法可以帮助您,例如:1.send(:+, 2) => 3
。
希望它有所帮助!