Как добавлять в строку часть другой строки, если она отсутствует в первой
В майнкрафт играли? Думаю да. Там есть такая штука: json чат. Моя проблема заключается в ней, но работа со строками и, вероятно, массивами.
В тексте будут символы форматирования, которые будут заменяться, но это опустим.
Заменить и занести все в один массив я смогу.
Допустим, есть следующая строка: &0[G] &{{#FF9933}}Player {{json {"text":"says:", "italic":true} }} &l&kit is wonderful!
Я могу сделать из нее массив:
['{"bold": false, "underlined":false, "strikethrough":false, "italic":false, "obfuscated":false, "color":"white", "text":""}', '{"color":"#000000"}', '{"text":"[G] "}', '{"color":"#FF9933"}', '{"text":"Player "}', '{{json {"text":"says:", "italic":true} }}', '{"text":" "', '"bold": true}', '{"obfuscated":true}', '{"text":"it is wonderful!"}']
В дальше я не знаю как делать. Нужно перебирать попарно элементы массива, сравнивая и изменяя их.
Берем первый элемент и второй. Смотрим: в первом элементе есть "bold", а во втором нету. Добавляем ко второму "bold" с таким же значением, как и в первом элементе, т.е. "bold": false. В первом есть "color" и во втором есть, значит ничего не делаем. Мы не должны сравнивать "text", а так же мы не сравниваем то, что начинается с {{json, мы сравниваем элемент перед ним и после него.
И так перебираем до самого конца. Потом можно удалить элементы с пустым или отсутствующим полем "text", но это не обязательно.
После всего этого нужно собрать все в одну строку с сохранением запятых, как между элементами в массиве.