1

Ruby 1.8.6 (2007-09-24 パッチレベル 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"取得するため、括弧内に手動で指定することはできません。toの動作を変更する方法はありますか?strmatch'string'"string"

4

4 に答える 4

0

@バレンティン

-> str from match が逐語的に取られなかったことを意味しました。したがって、私が気づいていなかった別の(より単純な)解決策が現れました....

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

于 2010-02-20T08:01:25.403 に答える
0

もっと簡単な方法があるかもしれませんが、以下のコードは機能します

> str = '\&123'
> puts "abc".gsub("b", str.gsub(/\\&/o, '\\\\\&\2\1'))
> => a\&123c
于 2010-02-19T10:38:41.863 に答える
0

Simple:

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

You may also want to take a look here.

于 2010-02-19T09:16:03.103 に答える
0

バックスラッシュを削除するだけです:

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

単一引用符で囲まれた文字列リテラル内のアンパサンドをバックスラッシュで保護する必要はありません (二重引用符で囲まれたものとは異なります)。

于 2010-02-19T10:14:36.183 に答える