如何转义单引号字符串中的斜杠?

发布于 2024-08-22 03:34:08 字数 581 浏览 11 评论 0原文

在 Ruby 1.8.6 (2007-09-24 patchlevel 111) 中:

str = '\&123'
puts "abc".gsub("b", str) => ab123c
puts "abc".gsub("b", "#{str}") => ab123c
puts "abc".gsub("b", str.to_s) => ab123c
puts "abc".gsub("b", '\&123') => ab123c
puts "abc".gsub("b", "\&123") => a&123c <--- This I want to achieve using temporary variable

如果我将 str = '\&123' 更改为 str = "\&123" 它工作正常,但我从 match 函数获取 str ,所以我无法在括号内手动指定它。有什么方法可以将 'string' 更改为 "string" 行为吗?

In Ruby 1.8.6 (2007-09-24 patchlevel 111):

str = '\&123'
puts "abc".gsub("b", str) => ab123c
puts "abc".gsub("b", "#{str}") => ab123c
puts "abc".gsub("b", str.to_s) => ab123c
puts "abc".gsub("b", '\&123') => ab123c
puts "abc".gsub("b", "\&123") => a&123c <--- This I want to achieve using temporary variable

If I change str = '\&123' to str = "\&123" it works fine, but I get str from match function, so I cannot specify it manually within parentheses. Is there any way to change the 'string' to "string" behavior?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

那一片橙海, 2024-08-29 03:34:08

也许有更简单的方法,但是下面的代码可以工作

> str = '\&123'
> puts "abc".gsub("b", str.gsub(/\\&/o, '\\\\\&\2\1'))
> => a\&123c

maybe there is a simpler way, however the code below works

> str = '\&123'
> puts "abc".gsub("b", str.gsub(/\\&/o, '\\\\\&\2\1'))
> => a\&123c
何止钟意 2024-08-29 03:34:08

简单:

str = '\&123' <-- the result of your match function
str = str.gsub(/\\/, '\\\\')

您可能还想看看此处

Simple:

str = '\&123' <-- the result of your match function
str = str.gsub(/\\/, '\\\\')

You may also want to take a look here.

归属感 2024-08-29 03:34:08

@瓦伦丁

->我的意思是比赛中的 str 没有逐字记录。因此出现了另一个(更简单的)解决方案,我不知道......

"abc".gsub("b") { str } -> a\&123c

@Valentin

-> I meant that str from match was not taken verbatim. Thus another (simpler) solution appeared, that I was not aware of....

"abc".gsub("b") { str } -> a\&123c

一抹苦笑 2024-08-29 03:34:08

只需删除反斜杠即可:

puts "abc".gsub("b", '&123')

无需保护内部带有反斜杠的&符号
单引号字符串文字(与双引号字符串文字不同)。

Just remove the backslash:

puts "abc".gsub("b", '&123')

There is no need to protect the ampersand with a backslash inside
single-quoted string literals (unlike double-quoted ones).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文