# IRC



## Johannes L. (11. Aug 2006)

Hallo,

ich weis nicht genau ob das hier das richtige Forum ist, aber ich habe eine JTextArea, in welcher ich die Nicknames eines Channels aufliste. Falls nun jemand den Channel verlässt, so muss ich ja abgleichen wer den Channel verlassen hat und diesen Arrayindex dann löschen (bzw. habe ich mir zumindest überlegt ihn mit "null" zu belegen und anschließend nocheinmal mit einer for-Schleife darüber zu iterieren, um zu testen ob der Wert "null" ist und ansonsten den Nicknamen einfach per append dem JTextArea zuweisen.

Mein Problem ist nun, dass der nickname, der per "PART" oder "QUIT" den Channel verlässt scheinbar mit keinem nicknamen aus dem Array übereinstimmt, wobei ich nicht direkt mit dem Array abgleiche sondern mit dem Text in der JTextArea, wo die nicknames wie folgt drinstehen: " "+nickname+"\n", also whitespace, dann der eigentliche Namen und ein Newline, daran wird es wohl auch irgendwie scheitern.


```
else if(line.indexOf("QUIT") >= 0 ||
                        line.indexOf("PART") >= 0)
                {
                    Pattern getnick = Pattern.compile(":(.*?)!", Pattern.CASE_INSENSITIVE);
                    Matcher m = getnick.matcher(line);
                    
                    if(m.find())
                    {
                        String nick = m.group().substring(1,m.group().length()-1);
                        
                        Pattern replace = Pattern.compile(nick);
                        Matcher m1 = replace.matcher(irc_window.nicknames.getText());
                        
                        if(m1.find())
                        {                                       
                            String replaced = m1.group();
                            replaced = replaced.trim();
                            
                            for(int i = 0; i < pieces.length; i++)
                            {
                                if(pieces[i] == replaced)
                                {
                                    pieces[i] = null;
                                    System.out.println("blaaaaaaaaaaaaaaaaaa");
                                }
                            }
                            
                            irc_window.nicknames.setText("");
                            
                            Arrays.sort(pieces);
                            
                            for(int i = 0; i < pieces.length; i++)
                            {
                                if(pieces[i] != null)
                                    irc_window.nicknames.append(" "+pieces[i]+"\n");
                            }
                        }
                        
                        irc_window.chatwindow.append(" " + nick + " hat " + channel + " verlassen!\n");
                    }
                }
```

Ich habe mir auch ausgeben lassen ob in replaced der richtige nickname ohne weitere Zeichen drin steht, was er auch tut. Naja, ich werde nun erstmal ins Bettchen hüpfen ;-)

Achja, eventuell weis ja noch jemand ob es eine Methode gibt, die bei der Sortierung der Arrayelemente nicht auf Groß- und Kleinbuchstaben achtet, Arrays.sort() wird anscheinend getrennt sortiert.

Viele Grüsse,
Johannes


----------



## Murray (11. Aug 2006)

String niemals mit ==, sondern immer mit equals vergleichen!

Hintergrund: == prüft auf Objektidentität (handelt es sich um das selbe Objekt, also technisch um das selbe Stück Hauptspeicher), equals prüft auf logische Gleichheit, wobei jede Klasse selbst implementiert, was in ihrem Kontext "gleich" bedeutet.


----------



## Johannes L. (12. Aug 2006)

Danke ich habe das ganze jetzt auch mit einer ArrayList implementiert ;-)


----------

