[英]Loop through a string and prefix each character with a different value
我正在使用Bungeecord為我的Minecraft服務器開發命令,並且需要一種向字符串中每個字符的開頭添加不同顏色代碼的方法。 希望我可以將他們輸入的任何字符串變成彩虹色打印。 我被要求使用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)但是這不接受char。 我也嘗試使用一些類似的方法
String.replace("" + c, "§" + one + c);
但是,這也不起作用。 您可以提供的任何幫助和/或指針將不勝感激:)謝謝
編輯:所需輸出的樣本行
用戶確實/ rainbow這是彩虹!
輸出:§4T§6h§ei§as§bt§9e§5x§dt... etc,但從§4重新啟動
如果將顏色存儲在數組中會更容易。 將顏色數量存儲在變量中,這樣就不必在循環中繼續執行colors.length
。
String [] colors = {"4", "6", "e", "a", "b", "9", "5", "d"};
int numColors = colors.length;
創建一個StringBuilder:
StringBuilder builder = new StringBuilder();
循環瀏覽字符數組。 為字符添加正確的顏色。 如果您的消息字符串大於8個字符,則i%numColors
將允許顏色陣列返回到開頭,因為您的陣列當前有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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.