1

情况:

  • 我有一个这样创建的字符串

    \033[32m\033[44mP"+characterID+"\033[0m"
    
  • 当字符串打印到控制台时,它会P + characterID 像应该的那样以绿色打印出来

问题:

  • 我需要创建一个标签string P + characterID
  • 但是放置的文本是[32m[44mP"+characterID+"[0m

现在怎么办:

  • 鉴于我有几个不同颜色的字符串,正则表达式和替换似乎并不适用于所有人。
  • 无论如何,我在创建文本时可以忽略转义码和颜色吗?

有什么建议么?

4

1 回答 1

0

如果您在谈论 Swing 的 JLabel 或 AWT - 您不能像在控制台中那样使用 ANSI 转义码。相反,您必须为该 JLabel 设置前景色或背景色。像这样的东西:

JLabel label = new JLabel("P" + characterID);
label.setColor(Color.GREEN);

编辑:如果您已经有“编码”字符串,那么您应该想出一个正则表达式,它只会找到“真实”数据并忽略转义码。假设您只有P,MT前缀,并且characterID是一个十进制数,正则表达式应该是这样的:

String realData = "\\033[32m\\033[44mP111\\033[0m".replace("[^PMT]\\d+", "");

这应该删除除您需要的数据之外的所有内容。

于 2013-04-14T09:22:47.977 回答