match?
似乎错过了字符串末尾的空白。
b = "hello world" # no white space
c = "hello world " # trailing white space
c.match?(b)
=> true # misses the white space, only looks at the word characters
b.match?(c)
=> false # detects the white space
我能想到的最简洁的解决方案是:
b.match?(c) && c.match?(b)
有更好的方法吗?
答案 0 :(得分:3)
要检查两个字符串是否相等,请使用:
b.eql?(c) #=> false
c.eql?(b) #=> false
来自docs:
eql?(other) → true or false
如果两个字符串的长度和内容相同,则它们相等。
match?
通过将参数转换为正则表达式来匹配模式。因此,可以在字符串/hello world/
中找到模式"hello world "
,反之亦然。
答案 1 :(得分:1)
匹配是匹配和相似的条件,但它并不寻找完全相同的条件。所以,最好是使用 平等方法
class RubyMatch
def self.rubyMatch
b='hello world'
c='hello world '
puts b.equal?(c) #1
puts c.equal?(b) #2
end
end
RubyMatch.rubyMatch
输出
false
false
因此您只能使用一张支票#1或#2