Переберите строку и префикс каждого символа с различным значением
Я разрабатываю команду для моего сервера Minecraft с использованием Bungeecord и мне нужен способ добавить другой цветовой код в начало каждого символа в строке. Надежда состоит в том, что я могу превратить любую строку, в которую они входят, в печать цвета радуги. Меня попросили использовать 8 различных цветовых кодов и повторить последовательность для каждых 8 проходящих символов.
Я зарегистрировал команду и все в таком духе, и она работает, у меня проблемы со строками. Я знаю, что для цикла через строку я могу использовать
String message;
for (int i = 0; i < message.toCharArray().size(); i++)
{
char c = message.charAt(i);
//Prefix code here
}
Я также определил 8 цветов, которые я хочу использовать
final String one = "4";
final String two = "6";
final String three = "e";
final String four = "a";
final String five = "b";
final String six = "9";
final String seven = "5";
final String eight = "d";
Что мне нужно, это то, что будет принимать строку, такую как
Этот текст теперь радуга!
и будет перебирать каждый символ и помещать "§one" - "§eight" впереди, чтобы раскрасить каждую букву.
Я пытался использовать String # replace (string, string), однако это не принимает символ. Я также пытался использовать что-то вроде
String.replace("" + c, "§" + one + c);
Однако это тоже не сработало. Буду признателен за любую помощь и / или указатели, которые вы можете предоставить:) Спасибо
РЕДАКТИРОВАТЬ: образец строки желаемого выхода
Пользователь делает / Радуга Этот текст радуга!
Вывод: §4T§6h§ei§as §bt§9e§5x§dt ... и т. Д., Но перезапуск с §4
2 ответа
Будет проще, если вы храните свои цвета в массиве. Сохраняйте количество цветов в переменной, чтобы не продолжать colors.length
в вашей петле.
String [] colors = {"4", "6", "e", "a", "b", "9", "5", "d"};
int numColors = colors.length;
Создайте StringBuilder:
StringBuilder builder = new StringBuilder();
Цикл по массиву символов. Добавьте правильный цвет к персонажу. i%numColors
позволит цветному массиву вернуться к началу, если длина строки вашего сообщения превышает 8 символов, поскольку в вашем массиве в настоящее время есть 8 параметров.
for(int i = 0; i < message.length(); i++){
builder.append("§");
builder.append(colors[i%numColors]);
builder.append(message.charAt(i));
}
Затем в конце вашего метода просто верните всю строку компоновщика.
return builder.toString();
Если вам нужен пробел или новая строка между каждым символом, просто сделайте builder.append ""
или же /n
,
Самый простой способ справиться с этим - перебрать каждый символ, а затем добавить его к StringBuilder
вместе с префиксом:
StringBuilder builder = new StringBuilder();
for(int i = 0; i < message.length(); i++) {
char currentLetter = message.charAt(i);
if(currentLetter == ' ') //skip spaces; optional
continue;
String prefix = ...; //grab a prefix
builder.append(prefix + currentLetter);
}
String coloredMessage = builder.toString();