我正在处理一个低级别的Ruby挑战,它看起来很直接,但我不知道如何反转字符串并保持整数不变。
这个问题想让我颠倒如下:
solve("a+b-c/d*30") = "30*d/c-b+a"
我的答案:
def solve(eq)
eq.reverse
end
输出:
Expected: "y/b*100", instead got: "y/b*001"
提前谢谢。
如果变量名可能包含多个字母,您可能希望在四个运算符上拆分字符串。
def solve(eq)
eq.split(/([+*/-])/).reverse.join
end
solve("az+b-c/d*30")
#=> "30*d/c-b+az"
请参阅String#split,特别是第三段。
我的解决方案:
def solve(eq)
eq.split(/(d*)/).reverse.join
end
source = "a+b-c/d*30"
wanted = "30*d/c-b+a"
p wanted
p solve(source)
p wanted == solve(source)
我取源字符串并用/(d*)/
(将其拆分
我得到:
["a", "", "+", "", "b", "", "-", "", "c", "", "/", "", "d", "", "*", "30"]
把30看作一根绳子。d*
将所有数字捕获为一个表达式。()
的意思是,拆分参数应该是结果的一部分。
此数组反转并重新连接。