【发布时间】:2017-04-08 03:16:31
【问题描述】:
我正在尝试创建一个旋转颜色的String。每个字母都有不同的color,它们需要以线性方式旋转。文本将进入JLabel。
我构建了文本,以便可以在给定一个单词和一组颜色(字符串)的情况下创建它。
String[] colors = {"white", "blue", "red"};
String word = "foo";
String coloredText;
String[] letters = word.split("(?!^)"); //split text into indiv. letters
coloredText = "<html>";
for(int i = 0, j = 0; i < letters.length; i++, j++){
if(j >= colors.length)
j=0;
coloredText += String.format("<font color='%s'> %s </font>", colors[j], letters[i]);
}
coloredText += "</html>";
这将产生一个字符串,其 foo 带有白色 F、蓝色 O 和红色结尾 O。
当然,如果颜色少于字母,它们会继续旋转。
现在我有一个 timer 来旋转颜色,但我不知道 algorithm 来做这件事。
基本上,每种颜色都应替换下一种颜色,最后一种颜色替换第一种颜色。
例如:
当然,这必须适用于任意数量的给定字母和颜色,不适合的颜色会被忽略。 (3个字母10种颜色的单词只会使用前3种颜色)。
我尝试过使用.replace(),但regex 对我来说有点太难了。
有什么想法吗?
【问题讨论】:
-
保留用于字段中第一个字母的颜色索引,并在每次为字符串着色时递减它。如果达到 -1,则将其重置为最后一个索引。第一轮是 0,所以你最终得到 WBR。然后你递减它。因为它变成-1,你把它设置为2,你最终得到RWB。然后将其递减,最终得到 BRW。
标签: java string algorithm colors