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

EDIT:すでに「エンコードされた」文字列がある場合は、「実際の」データだけを見つけてエスケープコードを無視する正規表現を考え出す必要があります。PMおよびTプレフィックスのみがあり、 が 10 進数であると仮定するとcharacterID、正規表現は次のようになります。

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

これにより、必要なデータ以外はすべて削除されます。

于 2013-04-14T09:22:47.977 に答える