java - 在字符串中的颜色之间旋转

标签 java string algorithm colors

我正在尝试创建一个旋转颜色的 String。每个字母都有不同的颜色,它们需要以线性方式旋转。文本将放在 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

当然,如果颜色比字母少,它们就会继续旋转。

现在我有一个计时器来旋转颜色,但我想不出算法来做这件事。 基本上,每种颜色都应该代替后面的颜色,最后一种颜色代替第一种颜色。

例如:

enter image description here

当然,这必须适用于任意数量的给定字母和颜色,不适合的颜色将被忽略。 (一个有 3 个字母和 10 种颜色的单词只会使用前 3 种颜色)。

我试过使用 .replace()regex 对我来说有点太难了。

有什么想法吗?

最佳答案

你可以有一个额外的整数(类或实例变量,取决于你的代码)作为 0 和 colors.length-1 之间的偏移量计数器。

int offset = 0

每次您的计时器执行时,将偏移量增加 1 并检查您的偏移量是否溢出允许的偏移量。如果是,则将其重置为 0。

void onTimerExecutes(){
    offset++;
    if (offset >= colors.length)
        offset = 0;
    applyColorsToText();
}

然后将偏移量添加到您的j:

j = offset;
for(int i = 0, i < letters.length; i++, j++)

关于java - 在字符串中的颜色之间旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40775879/

相关文章:

java - 哪些 Jackson maven 依赖项包含在 spring 3.1 项目中以进行 JAXB JSON 编码?

java - 如何以内存有效的方式对大型 HashMap 进行排序?

javascript - Javascript 中内置函数 "str.replace()"的时间复杂度或大 O 表示法是多少?

php - 使用 PHP 或 Javascript 连接 HTML 字符串

arrays - Swift - 在数组中搜索数字模式

algorithm - 文件.TSP(旅行推销员)的含义

java - 如何在不触发 Text Watcher 的情况下更改 EditText 文本?

java - 导入证书到cacerts时出现权限错误

javascript - 用jquery在字符串中查找最后一个单词的第一个字母(字符串可以有多个单词)

algorithm - 为数组的一部分值的总和找到最佳算法