2012-06-05 67 views
2

如何才能在字符串内检测IRC color codes检测字符串内的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客户端,我认为颜色是一个很酷的功能。

+0

马特,您需要提供多一点点信息。做到这一点的最佳方法是扩展您提供的代码,以包含方法的名称,接受的参数以及方法返回的数据。这将提供你想要达到的更好的定义。你也应该描述你收到的错误的失败,你的期望是什么,他们没有得到满足。 –

回答

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

的IRC颜色"specified" by mIRC - 这是复杂的,而不是所有的客户解释说明同样的方式 - 但你正在寻找其次,描述哪些具体的前景和数字的^C“控制字符”(0x03)要使用的背景颜色。

一旦在文本流中找到它们,您需要弄清楚如何更改文本小部件上的文本颜色,请记住在输出下一条消息之前将文本恢复到正常。

+0

不幸的是,IRC颜色代码不是ANSI颜色代码。他们是Khaled为mIRC创建的令人讨厌的模糊自定义事物:http://www.mirc.com/colors.html – duskwuff

+0

@duskwuff:哦,伙计,你说得对。我完全忘了。感谢您的修复。 – sarnold