正在尝试拆分字符串(ruby)
我对Ruby不熟悉。我想做一些简单的计算器程序。所以,基本上它应该做的是输入 4+2 输出6。很简单,对吧?所以我想。我试图在所有操作字符处拆分一个字符串,所以我制作了这个快速正则表达式,认为它可以工作。没有正在尝试拆分字符串(ruby),ruby,regex,string,split,Ruby,Regex,String,Split,我对Ruby不熟悉。我想做一些简单的计算器程序。所以,基本上它应该做的是输入 4+2 输出6。很简单,对吧?所以我想。我试图在所有操作字符处拆分一个字符串,所以我制作了这个快速正则表达式,认为它可以工作。没有 class Calculator def add(a,b) return a+b end def sub(a,b) return a-b end def div(a,b) return a/b end def mul(a,b) return a*b end
class Calculator
def add(a,b)
return a+b
end
def sub(a,b)
return a-b
end
def div(a,b)
return a/b
end
def mul(a,b)
return a*b
end
end
operation = gets.split("[\/\+\-\*]")
print(operation)
sleep()
sleep()用于暂停控制台,以便查看输出。但是现在,它正在输出
[“4+2\n”]
??我不知道我做错了什么。我需要一些帮助。(它应该输出[“4”、“+”、“2”]
)。提前感谢。对于要使用/
而不是“
的正则表达式,请执行以下操作:
operation=get.split(/[\/\+\-\*]/)\\[“4”,“2\n”]
有一个额外的换行符,用strip删除:
operation=gets.strip.split(/[\/\+\-\*]/)\\[“4”,“2”]
但我们失去了接线员。查看文档:
如果模式包含组,则将返回相应的匹配项
在数组中也是如此
在正则表达式中添加()
将创建一个组。因此,我们有:
<> >代码>操作=获取.脱衣.拆分(/(\/\+\**)/)[ [ 4 ],“+”,“2”] < /代码> 不需要逃离字符类内的每个字符.请考虑以下内容:
operation = gets.gsub(/[^\d\/*+-]/, '').split(/([\/*+-])/)
或
您可以尝试以下代码
operation = gets.chomp.gsub(/[\/\+\-\*]/, ';\0;').split(";")
print(operation)
执行结果:
4+2/3*9-0
["4", "+", "2", "/", "3", "*", "9", "-", "0"]
非常感谢,但是我不理解gets.strip.split。我知道它会剥离换行符,但它不应该是
gets.split(无论什么).strip
?Split返回一个数组。strip对字符串进行操作,在调用Split之前我将删除换行符。-1在发布正则表达式答案之前,了解如何在正则表达式中转义。是的,但使用\d
而不是0-9
4+2/3*9-0
["4", "+", "2", "/", "3", "*", "9", "-", "0"]