Заменить 2 строки одновременно?

Я понял: после однократного сохранения настроек Jenkins (в графическом интерфейсе) он сгенерирует XML-файлы для конфигураций плагинов в $JENKINSHOME.

Должно было знать, что я работаю с докером Дженкинсом.

8
задан Outlaw Programmer 7 February 2009 в 17:23
поделиться

3 ответа

Общий ответ:
Используйте regex для соответствия и AAAA и CCCC, затем замените каждым соответствием с CCCC и AAAA соответственно.

редактирование для разрешения беспорядка

str1.gsub(/(AAAA|CCCC)/) { $1 == 'AAAA' ? 'CCCC' : 'AAAA' }

отредактируйте я думал о более изящном слишком :)

str1.gsub(/((AAAA)|(CCCC))/) { $2 ? 'CCCC' : 'AAAA' }
14
ответ дан 5 December 2019 в 12:13
поделиться

Действительно ли это - опция для Вас заменить AAAA чем-то еще сначала и затем продолжиться?

str1.gsub("AAAA","WXYZ") # WXYZ BBBB CCCC DDDD
str1.gsub("CCCC","AAAA") # WXYZ BBBB AAAA DDDD
str1.gsub("WXYZ","CCCC") # CCCC BBBB AAAA DDDD
0
ответ дан 5 December 2019 в 12:13
поделиться

Решение (хотя что-то базировалось вокруг regex, будет лучшим) было бы чем-то вроде создания заменяющего хеша как такового, который может быть расширен по мере необходимости. Я просто быстро соединил это для демонстрации. Я уверен с немного большей любовью и уходом, можно придумать что-то более изящное, которое работает в том же направлении, как эта реализация только работает на строки с пробелами.

str1 = "AAAA BBBB CCCC DDDD"    
replacements = { "AAAA" => "CCCC", "CCCC" => "AAAA", "XXXX" => "ZZZZ" } # etc...

new_string = ""
str1.split(" ").each do |s| 
    new_string += replacements[s] || s
    new_string += " "
end

puts new_string # CCCC BBBB AAAA DDDD 
0
ответ дан 5 December 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: