1

如果字符串是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>

使用不同的字符串方法?

4

3 回答 3

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);

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

于 2015-12-08T18:09:55.053 回答
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();

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

于 2012-09-15T11:31:25.573 回答
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();

更新:添加说明

于 2012-09-15T11:46:24.083 回答