2016-07-18 4 views
0

Я попытался найти простое решение для случайного замещения определенного символа в файле.Случайная замена конкретного символа в файле (ruby)

К сожалению, мое решение заменяет все найденные символы, а не только некоторые из них.

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

не ясно. Вы хотите заменить некоторые случайные вхождения определенного (фиксированного) символа конкретным (фиксированным) символом? – sawa

+0

yes (в качестве примера персонаж встречается 12 раз в файле, но заменяется только случайным количеством) – Yogi

ответ

1

Вопрос не ясен. Если вы хотите заменить некоторые случайные вхождения определенного (фиксированный) характера (",") с определенным (фиксированным) символом (";"), а затем сделать:

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

Спасибо, что отлично подходит для моего вопроса – Yogi

+0

Более гибким способом легко определить вероятность будет: '(rand <0.5)? ",": ";" - как вы теперь можете определить произвольные проценты, а не ограничиваться словами «1 в X». –

+0

@tom lord ... does '(rand <0.5)? ",": ";" его 50-50 вероятность замены, так что если я делаю '(rand <0,3)? ",": ";" его 30-70 вероятность замены? – Yogi

Смежные вопросы