情况:


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

\033[32m\033[44mP"+characterID+"\033[0m"

在将字符串打印到控制台时,它会打印出P + characterID
像它应该的绿色


问题:


我需要使用string P + characterID创建标签
但是放置的文字是[32m[44mP"+characterID+"[0m


现在怎么办:


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


有什么建议么?

最佳答案

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

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


编辑:如果您已经有“已编码”字符串,那么您应该提出一个正则表达式,该正则表达式将只查找“真实”数据而忽略转义码。
假设您只有PMT前缀,并且characterID是十进制数字,则正则表达式应如下所示:

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


这将删除您需要的数据以外的所有内容。

10-04 14:02