为什么NodeComment
找不到双引号?
check_char1
...可以使用#!/usr/bin/env ruby
line = 'hello, "bob"'
def check_char1(line, _char)
puts "check_char1 found #{_char} in #{line}" if line =~ /_char/
end
check_char1(line, '"')
def check_char2(line, _char)
puts "check_char2 found #{_char.inspect} in #{line}" if line =~ _char
end
check_char2(line, /"/)
使它起作用吗? (如何将双引号传递给该方法?)
答案 0 :(得分:3)
如果_char
仅是一个字符串(即不需要正则表达式模式匹配),则只需使用String#include?
if line.include?(_char)
如果您必须为此使用正则表达式,那么Regexp.escape
是您的朋友:
if line =~ /#{Regexp.escape(_char)}/
if line =~ Regexp.new(Regexp.escape(_char))
,如果您希望将_char
当作正则表达式来对待(即'.'
匹配任何内容),请放下Regexp.escape
:
if line =~ /#{_char}/
if line =~ Regexp.new(_char)
答案 1 :(得分:2)
在check_char1
中,_char
中的/_char/
被视为文字,而不是变量。您需要/#{_char}/
。
如果将_char
视为变量,那么如何在正则表达式中输入作为变量,方法或常量名称的文字呢?