2012-06-05 107 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