2017-04-23 88 views

回答

5

gsub是矯枉過正這裏。使用String#tr

string = "bi2gger 1is 00ggooder" 
string.tr("^g", " ") 
# => " gg   gg  " 

這將返回一個新的字符串。要修改原始字符串,請使用tr!

看到它在repl.it:https://repl.it/KJPY

2

您可以使用String#gsub[^g]它取代除g所有字符,用" "

string.gsub(/[^g]/," ") #=> " gg   gg  " 
0

這可以用正則表達式

此問題,可煮可實現正如評論所說的那樣,直到正則表達式。 爲了替代每個「G」字從你的字符串,你可以使用正則表達式:/[^g]/

因此最簡單的解決方案是使用String#gsub和正則表達式來改變匹配規則的所有字符。 (請注意,您也有這樣的方法String#gsub!的爆炸版本將取代原來的字符串)

可以讀/嘗試正則表達式在網站RegexPal

0

String#gsub可以在這裏使用。

string = "bi2gger 1is 00ggooder" 

string.gsub(/./) { |s| s=='g' ? 'g' : ' ' } 
    #=> " gg   gg  " 
+0

'Hash.new('')...'在這裏也適用。 –

+0

讀者:我以前有'h = Hash.new {''} .tap {| h | h [「g」] =「g」}; string.gsub(/./,h)'。 @喬丹的建議是一個改進,但它仍然是一個相當蹩腳的答案。 (我在想什麼?)因此,我改變了它,但仍然更喜歡喬丹的答案。 –

相關問題