如何将数字分割和保持在一起

时间:2018-11-21 22:35:01

标签: ruby string

我正在编写数学表达式检查器。我有这个字符串:

Oper = "((234+332)+(cos4-sin65))"

我想通过分离所有"()"和运算符减去数字或三角比来拆分此字符串,以获得以下结果:

Oper = ['(', '(', '234', '+', '332', ')', '+', '(', 'cos4', '-', 'sin65', ')', ')']

拆分会如何?

2 个答案:

答案 0 :(得分:1)

"((234+332)+(cos4-sin65))".split /([[:alpha:]]*\d+)*/
# => ["(", "(", "234", "+", "332", ")", "+", "(", "cos4", "-", "sin65", ")", ")"]

不使用任何字符或可选的字母数字+数字分割整个字符串。

答案 1 :(得分:1)

oper = "((234+332)+(cos4-sin65))"

oper.scan /[^[:alnum:]]|[[:alnum:]]+/
  #=> ["(", "(", "234", "+", "332", ")", "+", "(", "cos4", "-", "sin65", ")", ")"]

扫描一个非字母数字字符或一个或多个字母数字字符。