今天下午 Rubocop 把我拉过来,因为我没有将我的正则表达式文字包装在 %r{} 中。但它随后继续破坏我的 gsub。为什么?
path = '/en/something'
# "/en/something"
locale = 'en'
# "en"
path.gsub(/\A\/#{locale}\/?/, '/')
# "/something" <---- Expected
path.gsub(%r{/\A\/#{locale}\/?/}, '/')
# "/en/something" <---- Unexpected
Run Code Online (Sandbox Code Playgroud)
Ruby 允许您以%r您选择的分隔符开始您的正则表达式。当您描述的模式包含大量正斜杠字符时,这很有用,因为这些斜杠不需要在该语法中进行转义。
因此/\A\/#{locale}\/?/和%r{/\A\/#{locale}\/?/}不相等,%r{\A/#{locale}/?}改用。
r = /\A\/#{locale}\/?/
r == %r{/\A\/#{locale}\/?/}
#=> false
r == %r{\A/#{locale}/?}
#=> true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73 次 |
| 最近记录: |