2016-09-30 6 views
1

ユーザーがパスワードをリセットしようとすると、私のビューに電子メールのドメイン部分を隠そうとしています。私はgsubを使用していますが、2文字の和集合に問題があります。電子メールドメインの一部を非表示にする

例:私はこの結果を得た

​​

:私は##の真ん中にそれ\をしたくない

"my###\#@example.com" 

を、私はコンソールに入り、私はちょうど'#@'を書く場合 私は"\#@"を得て、私はこれらの文字をエスケープする方法を知らない。

この方法でも問題があります。ドメインの文字数が4文字未満であれば、ドメインに4 'を入れます。しかし、私の主な関心事は「#@」のつながりです。

答えて

1

あなたは問題ありません。 #はグローバル変数の補間を参照することができるので(#Why does string interpolation work in Ruby when there are no curly braces?を参照)、irbによって#がエスケープされているか、綺麗に表示されています。バックスラッシュは、明示的にそれを印刷して確認することができ、文字列、中に実際にはありません:

print("[email protected]".gsub(/.{0,4}@/,'####@')) 
0

@は、@exampleの一部として、エスケープされていないと'#'が先行している場合は、Rubyはインスタンス変数の値を挿入します@example

とします

@example = 'hi' 
"my####@example.com" #=> "my###.com" 

ないインスタンス変数@exampleが存在しない場合、それは空の文字列に変換されnilを返す参照。

"my####@example.com" #=> "my###.com" 

これは、グローバル変数でもを行うことができます。

$example = 'ho' 
"my####$example.com" #=> "my###ho.com" 

とクラス変数を持つ:答えを

@@example = 'hum' 
"my####@@example.com" #=> "my###hum.com" 
+0

感謝 –

関連する問題