使用x regex修饰符忽略Ruby中的空格

时间:2015-10-30 14:48:20

标签: ruby-on-rails ruby regex

我正在浏览关于Rubymonk的Ruby教程,问题陈述是这样的:给定一个句子,如果句子是回文,则返回true。忽略空格和字符大小。

Rubymonk使用gsub

为我提供了以下解决方案
  def palindrome?(sentence)
      downcase_stripped_sentence = sentence.downcase.gsub(" ", "")
      downcase_stripped_sentence  ==  downcase_stripped_sentence.reverse
    end

    palindrome?("Never odd or even")

但我想知道我是否可以使用//x正则表达式修饰符完成任务。 你觉得怎么样?

2 个答案:

答案 0 :(得分:1)

不,您不能使用/x Regexp标志。 适用于自身生成的模式,而不适用于正则表达式引擎的字符串匹配。

如果要忽略字符,则必须预处理匹配的字符串,这是gsub(" ", "")正在进行的操作。

就我个人而言,我使用delete(' ')tr(' ', '')要比使用gsub那样快:

require 'fruity'

STRING = ('a'..'z').to_a * ' '

compare do
  use_tr { STRING.tr(' ', '') }
  use_delete { STRING.delete(' ') }
  use_gsub { STRING.gsub(' ', '') }
end
# >> Running each test 4096 times. Test will take about 1 second.
# >> use_delete is similar to use_tr
# >> use_tr is faster than use_gsub by 5x ± 1.0

答案 1 :(得分:0)

这可以通过使用eval来实现,但在我看来,字符串评估是纯粹的邪恶。

gsub的功能看起来很不错。