Ruby #match?错过尾随空白

时间:2018-09-29 06:23:36

标签: ruby string comparison match

Ruby中的

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)

有更好的方法吗?

2 个答案:

答案 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