Ruby #match?пропускает конечный пробел - PullRequest
0 голосов
/ 29 сентября 2018

match? в Ruby, похоже, пропускает конечный пробел в конце строки.

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 голосов
/ 29 сентября 2018

Совпадение - это условие совпадения и схожести, но оно не выглядит точным или одинаковым.Таким образом, лучше использовать равный метод

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

0 голосов
/ 29 сентября 2018

Чтобы проверить, равны ли две строки, используйте:

b.eql?(c) #=> false
c.eql?(b) #=> false

Из документов :

eql?(other) → true or false

Двастроки равны, если они имеют одинаковую длину и содержание.

Принимая во внимание, что match? соответствует шаблону путем преобразования аргумента в регулярное выражение.И, конечно, шаблон /hello world/ может быть найден в строке "hello world ", но не наоборот.

...