2016-07-18 4 views
0

私は、ファイル内でランダムに特定の文字を置き換えるために簡単な解決策を見つけることを試みました。ファイル内の特定の文字のランダム置換(ルビー)

残念ながら、私の解決策は見つかった全ての文字を置き換えるだけでなく、それらのいくつか。

file_names = ['users_controller.rb'] 

file_names.each do |file_name| 
    text = File.read(file_name) 
    new_contents = text.gsub(",", ";") #replaces , to ; (unfortunatly all and not just some) 
    puts new_contents 
    File.open(file_name, "w") {|file| file.puts new_contents } 
end 

ご協力いただきありがとうございます。

+0

はっきりしません。特定の(固定)文字のランダムな出現を特定の(固定)文字で置き換えたいですか? '(ランド<0.5:完全に私の質問 – sawa

+0

はい(例として、文字がファイルに12回発生したが、それらの唯一のランダムな量が置き換えられます) – Yogi

答えて

1

質問は明確ではありません。あなたが特定の(固定)文字(";")で、特定の(固定)文字(",")のいくつかのランダムな出現を交換したい場合は、その後の操作を行います。

text.gsub(","){rand(2).zero? ? "," : ";"} 
+0

ありがとう澤)? "、": ";" ' - " 1 in X "という言葉に限定されるのではなく、任意のパーセンテージを定義できるようになりました。 – Yogi

+0

簡単確率は次のようになり定義するための柔軟な方法をフィット –

+0

@tom lord ...は '(rand <0.5)ですか? "、": ";" ''もしあれば、50-50の置換えの確率で '(rand <0.3)ですか? "、": ";"それは30-70の交換のチャンスですか? – Yogi

関連する問題