【发布时间】:2014-01-11 21:26:47
【问题描述】:
写一个方法'valid_string?'接受一个字符串。如果括号、圆括号和花括号正确闭合,则返回 true。否则返回 false。
valid_string?("[ ]") # returns true
valid_string?("[ ") # returns false
valid_string?("[ ( text ) {} ]") # returns true
valid_string?("[ ( text { ) } ]") # returns false
我的代码:对所有内容都返回 false。甚至尝试对个别情况使用显式布尔值 {} || () || 等都没有用。对所有内容都返回 true 或 false。是我的驱动代码吗?
def valid_string?(str)
if str == ("\[\s+]")
true
else
false
end
end
更新的解决方案:-------------------------------------------------------- ---- 是的! #match 肯定效果更好!尽管我的最后一行测试代码评估为真。什么时候应该是假的。 . .
def valid_string?(str)
if str.match "(\\[.+\\])" || "|(\\(\\))" || "|({})"
return true
else
return false
end
end
puts valid_string?("[ ]") # returns true
puts valid_string?("[ ") # returns false
puts valid_string?("[ ( text ) {} ]") # returns true
puts valid_string?("[ ( text { ) } ]") # returns false
【问题讨论】:
-
==用于比较regex == regex,而不是regex == string。您想使用~=或match。看看docs -
您不能使用正则表达式来检查括号和前提的顺序,您必须使用 LIFO 数据结构。
-
这不是您想要使用正则表达式执行的检查。
-
@rullof 你错了。初学者常见的“正则表达式”和“正则语法”混淆。
-
@sawa 怎么了是不是错了?