複数のワイルドカード (または誰かがよく知っている場合は他の方法) を使用して、文字列の配列内の複数の文字を置き換える方法を見つけようとしています。配列内の各要素は、電話番号と日付です (例: 8675309,2015- 01-20)。配列の各要素が電話番号のみになるように、コンマと日付のみを削除しようとしています
.gsub!
配列内の各要素を反復処理するとき、各要素を1 文字置換するときに呼び出すことで、期待どおりの結果が得られました。
file_data = ["8675309,2015-01-20"]
puts file_data[0] #=> 8675309,2015-01-20
file_data.each do |s|
s.gsub!(/0/, "X")
end
puts file_data[0] #> 86753X9,2X15-X1-2X
カンマと日付を削除するために、単純にワイルドカードを使用してs.gsub!(",****/**/**", "")
. 次に、これは予期しない結果を示しています。
file_data = ["8675309,2015-01-20"]
file_data.each do |s|
s.gsub!(/,****-**-**/, "")
end
puts file_data[0] #> 8675309,2015-01-20
他のスレッドで提案されている他のワイルドカード文字 (「. 」および「^」) もいくつか試しましたが、結果は変わりませんでした。
プライマリ番号をそのままにして、各要素のコンマと日付を削除する方法がわかりません。私.gsub!
は適切な方法だと思っていましたが、他の方法も受け入れています。どんな助けでも大歓迎です。