2

文字列内のIRCカラーコードを検出するにはどうすればよいですか?

これが私が試したことです:

int length = message.length();
ArrayList<Object> buffer = new ArrayList<Object>();
for (int i = 0; i < length; i++) {
  char ch = message.charAt(i);
  if (Character.isDefined(ch) && !Character.isLetter(ch)) {
    Methods.log("val " + (int) ch);//Attempt logging the irc color value
  } else {
    buffer.add(ch);
  }
}

しかし、これは失敗しました。私は11年生のプログラミングクラス用にIRCクライアントを作成していますが、色を追加するのがクールな機能になると思いました。

4

2 に答える 2

1

IRCの色はmIRCによって「指定」されます。これは複雑で、すべてのクライアントが仕様を同じように解釈するわけではありませんが、^C「制御文字」(0x03)の後に、特定の前景色と背景色を表す数字が続きます。使用します。

テキストのストリームでそれらを見つけたら、テキストウィジェットのテキストの色を変更する方法を理解し、次のメッセージが出力される前にテキストを通常に戻すことを忘れないでください。

于 2012-06-05T22:48:38.993 に答える
0

修繕

        int length = message.length();
        LinkedList<Object> buffer = new LinkedList<Object>();
        for (int i = 0; i < length; i++) {
            char ch = message.charAt(i);
            if ((byte) ch == 3) {
                String color = "";
                i++;
                while (i < length) {//loop
                    char d = message.charAt(i);
                    if ((d >= '0') && (d <= '9')) {
                        if (color.length() == 2) {
                            i--;
                            break;//break b4 stackoverflow!!!
                        }
                        color += d;
                        i++;
                    } else {
                        i--;
                        break;//break b4 stackoverflow!!!
                    }
                }
                for (IRCModifier m : IRCModifier.values()) {
                    if (m.getCode().equalsIgnoreCase(color)
                            || m.getCode().replace("0", "")
                                    .equalsIgnoreCase(color)) {
                        buffer.add(m.getEffect());
                        break;
                    }
                }
            } else {
                buffer.add(ch);
            }
        }
于 2012-06-07T00:33:34.343 に答える