"g"
を除くすべての文字、数字、記号を文字列から削除し、" "
に置き換えるにはどうすればよいですか?"g"とは別に、文字列のすべての文字を ""で置き換える方法は?
string = "bi2gger 1is 00ggooder"
"g"
を除くすべての文字、数字、記号を文字列から削除し、" "
に置き換えるにはどうすればよいですか?"g"とは別に、文字列のすべての文字を ""で置き換える方法は?
string = "bi2gger 1is 00ggooder"
gsub
が行き過ぎここにある:サイトで正規表現を試す/
あなたが読むことができます(また、あなたの元の文字列に置き換えられます。この方法String#gsub!
の強打のバージョンを持っていることに注意してください)。 String#tr
を使用します。
string = "bi2gger 1is 00ggooder"
string.tr("^g", " ")
# => " gg gg "
これは新しい文字列を返します。代わりに元の文字列を変更するには、tr!
を使用します。
はrepl.itでそれを参照してください:https://repl.it/KJPY
あなたは" "
で、g
を除くすべての文字に置き換えられている[^g]
とString#gsub
を使用することができます。
string.gsub(/[^g]/," ") #=> " gg gg "
これは、この問題が沸騰することができ
正規表現で達成することができますコメントが述べられているように、正規表現に至るまで。だから、最も簡単な解決策は、そのルールに一致するすべての文字を変更するString#gsub
と、正規表現を使用することです/[^g]/
: あなたの文字列からすべての「G」の文字を交換するためには、正規表現を使用することができます。 RegexPal
String#gsubは、ここで使用することができます。
string = "bi2gger 1is 00ggooder"
string.gsub(/./) { |s| s=='g' ? 'g' : ' ' }
#=> " gg gg "
'Hash.new( '')...'もここで動作します。 –
読者:以前は 'h = Hash.new {''} .tap {| h | h ["g"] = "g"}; string.gsub(/./、h) '。 @ジョーダンの提案は改善ですが、それはまだかなり不自由な答えです。 (私は何を考えていたのですか?)それゆえ私はそれを変更しましたが、依然としてジョーダンの答えが好きです。 –