Java 检测字符串中的IRC颜色

Java 检测字符串中的IRC颜色,java,unicode,utf-8,irc,Java,Unicode,Utf 8,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)

如何在字符串中进行检测

以下是我尝试过的:

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);
  }
}
int length=message.length();
ArrayList缓冲区=新的ArrayList();
for(int i=0;i
然而,这失败了。我正在为我的11年级编程课程编写一个IRC客户端,我认为颜色是一个很酷的功能。IRC颜色很复杂,不是所有客户端都以相同的方式解释规范,但您正在寻找
^C
“控制字符”(
0x03
)后面是描述要使用的特定前景和背景色的数字

一旦你在文本流中找到了它们,你就需要弄清楚如何更改文本控件上的文本颜色,并记住在下一条消息输出之前将文本设置回正常状态。

已修复

        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);
            }
        }
int length=message.length();
LinkedList缓冲区=新建LinkedList();
for(int i=0;i如果((d>='0')&&(d Matt,你需要提供更多的信息。最好的方法是扩展你提供的代码,包括方法的名称、它接受的参数和方法返回的数据。这将为你想要实现的目标提供更好的定义。你还应该从你收到的错误,你的期望是如何没有得到满足。不幸的是,IRC颜色代码不是ANSI颜色代码。它们是Khaled为mIRC创建的一个令人恼火的模棱两可的自定义代码:@Dashwuff:哦,伙计,你说得对。我完全忘了。谢谢你的修复。