簡體   English   中英

遍歷字符串並為每個字符添加不同的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM