如何在字符串中插入颜色标签? (JAVA)

时间:2012-09-15 11:12:12

标签: java

如果字符串是Java is Great!,那我怎么能这样做:

<font color="red">Java</font> <font color="blue">is</font> <font color="yellow">Great!</font>

每种颜色的颜色值应该不同。

同样,如何对所有单词执行此操作,例如:

<font color="color1">J</font>
<font color="color2">a</font>
<font color="color3">v</font>
<font color="color4">a</font>
<font color="color5"> </font>
<font color="color6">i</font>
<font color="color6">s</font>
<font color="color7"> </font>
<font color="color8">G</font>
<font color="color9">r</font>
<font color="color10">e</font>
<font color="color11">a</font>
<font color="color12">t</font>
<font color="color13">!</font>

使用不同的String方法?

3 个答案:

答案 0 :(得分:2)

很简单,试试这段代码:

private final static String RED_COLOR_OPEN = "<font color=\"red\">";
private final static String RED_COLOR_CLOSE = "</font>";

并在您的方法中:

StringBuffer sb = new StringBuffer();
    sb.append(RED_COLOR_OPEN).append(BOLD_OPEN).append(title).append(BOLD_CLOSE).append(".").append(RED_COLOR_CLOSE).trimToSize();
    sb.append(BREAK);

这将调整颜色以完成剩余的信息

答案 1 :(得分:1)

要执行此操作,您需要一次访问一个字符串中的每个字符。您可以通过创建一个简单的循环来实现:

    for(Character c: myString.toCharArray()){

    }

由于您正在操作字符串,因此建议在此处使用StringBuilder。在循环之前,您可以创建一个类似的:

   StringBuilder sb = new StringBuilder();

要在循环中的字符周围添加标记,您可以执行以下操作:

  sb.append("<font color=\"color1\">");
  sb.append(c);
  sb.append("</font>");

在循环之后,您将获得如下的新字符串:

 String result = sb.toString();

你可以随心所欲地做。要获得不同的颜色,您必须决定如何保留这些颜色,比如在数组中,并访问它们以适当地构建字符串。

答案 2 :(得分:1)

在这里。基本上它使用三个字符串函数 - split()charAt()format()来操纵字符串。

String[] colors = {"red","blue","yellow"};
//Store the message in string
String msg = "java is great";
//Split the msg into words using String#split() method. 
//Use a regex \s+ to split the Message using space as delimiter
String[] message = msg.split("\\s+");
//Now each word in msg is available in message array.
//Iterate over each word to generate the required output format
StringBuilder s = new StringBuilder();
for(int i=0;i<message.length;i++)
{
//use the String#format() method to get the required format for String 
      s.append(String.format("<font color=\"%s\">%s</font>",
                              colors[i],message[i]);
}
String output = s.toString();

也适用于第二种解决方案。没有包含颜色数组长度检查。确保你有足够的颜色。

String[] colors = {"red","blue","yellow"};
String msg = "java is great";
StringBuilder s = new StringBuilder();
for(int i=0;i<msg.length();i++)
{
      s.append(String.format("<font color=\"%s\">%s</font>",colors[i],msg.charAt[i]);
}
String output = s.toString();

更新: 添加说明