[ruby-list:48668] Re: "a_b$c" を "a\_b\$c" に変換したいのですが、、、

From: okkez <okkez000@...>
Date: 2012-03-28 12:41:03 UTC
List: ruby-list #48668
okkez です。

こんなもんでしょうか?

"a_b$c".gsub(/([_$])/, '\\\\\\1')
"a_b$c".gsub(/[_$]/, '\\\\\\&')
"a_b$c".gsub(/[_$]/) {|m| "\\#{m}" }


2012年3月28日21:26 dezawa <dezawa@aliadne.net>:
> dezawaです
>
> "a_b$c" を "a\_b\$c" に変換したいのですが、、、
>
> \ でなく 他の文字なら大丈夫なのですが,
> puts "a_b$c".gsub(/[$_]/,'|\&') => a|_b|$c
>
> \ だとうまく行かない
> puts "a_b$c".gsub(/[$_]/,'\\\&') => a\&b\&c
> puts "a_b$c".gsub(/[$_]/,'\\&') => a_b$c
> puts "a_b$c".gsub(/[$_]/,'\&') => a_b$c
>
>
>  "a_b$c".split("").inject(""){|s,c| s + (c =~ /[_$]/ ? "\\"+c : c) }
> ではなんかなぁ、、、
>
> 二段でやるとして、一段目変換の文字列が絶対出てこないって保証はいかに、
>  "a_b$c".gsub(/[$_]/,'"""\&').gsub(/"""/,"\\")
>
>
> 良い方法を教えてください。
>
> #  \ の扱いっていろいろ難しいです。
>
>



-- 
okkez
okkez000@gmail.com

In This Thread