Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。
grepはコマンドライン上でテキスト検索を可能にするユーティリティーです。元はUnixのために用意されたものです。
Q&A
解決済
3回答
1261閲覧
総合スコア29
0グッド
1クリップ
投稿2021/01/22 01:10
0
1
a = "abcd@yahoo.co.jp"をab**@yahoo.co.jpのように、先頭から@までの文字列の最初の2文字以外の文字を*にしたいです。
a = "abcd@yahoo.co.jp"
ab**@yahoo.co.jp
p a.gsub(/^(..).*?(@.*)$/, '\1*\2')だと"ab*@yahoo.co.jp"と出力され、*の数がコントロールできません。
p a.gsub(/^(..).*?(@.*)$/, '\1*\2')
"ab*@yahoo.co.jp"
どのように、直せばよろしいでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答3件
ベストアンサー
@がひとつだけなら
(?<=.{2}).(?=.*@)
投稿2021/01/22 01:38
総合スコア282
回答へのコメント
2021/01/22 03:00
2021/01/22 17:10
2021/01/23 02:15
下記でどうでしょうか。
ruby1a = "abcd@yahoo.co.jp" 2p a.gsub(/^(..)(.*?)(@.*)$/){ $1 + '*' * $2.size + $3} 3
ruby
1a = "abcd@yahoo.co.jp" 2p a.gsub(/^(..)(.*?)(@.*)$/){ $1 + '*' * $2.size + $3} 3
実行結果 "ab**@yahoo.co.jp"
投稿2021/01/22 02:49
総合スコア5540
「先頭から@までの文字列の最初の2文字以外の文字」(正確には文字列)もキャプチャして、その長さを*の数に反映させればいいでしょう。
*
ruby1a = "abcd@yahoo.co.jp" 2b = "abcdefg@yahoo.co.jp" 3 4m = /^(..)(.*?)(@.*)$/.match(a) 5puts m[1] + "*" * m[2].length + m[3] if m 6 7m = /^(..)(.*?)(@.*)$/.match(b) 8puts m[1] + "*" * m[2].length + m[3] if m
1a = "abcd@yahoo.co.jp" 2b = "abcdefg@yahoo.co.jp" 3 4m = /^(..)(.*?)(@.*)$/.match(a) 5puts m[1] + "*" * m[2].length + m[3] if m 6 7m = /^(..)(.*?)(@.*)$/.match(b) 8puts m[1] + "*" * m[2].length + m[3] if m
results1ab**@yahoo.co.jp 2ab*****@yahoo.co.jp
results
1ab**@yahoo.co.jp 2ab*****@yahoo.co.jp
投稿2021/01/22 01:33
総合スコア11992
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.30%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
Ruby 正規表現 文字列の先頭2文字だけ表示させたい
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/22 03:00
2021/01/22 17:10
2021/01/23 02:15