在数字处拆分字符串并放入数组,轨道

时间:2018-04-21 01:30:23

标签: ruby-on-rails string math

因此对于字符串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

希望它有所帮助!