2010-03-29 6 views
1

Bon alors voici ce que j'ai jusqu'à présent,Trouble with StreamReader

List<string> lines = new List<string>(); 

using (StreamReader r = new StreamReader(f)) 
{ 
    string line; 
    while ((line = r.ReadLine()) != null) 
    { 
     lines.Add(line); 
    } 
} 

foreach (string s in lines) 
{ 
    NetworkStream stream = irc.GetStream(); 

    writer.WriteLine(USER); 
    writer.Flush(); 
    writer.WriteLine("NICK " + NICK); 
    writer.Flush(); 
    writer.WriteLine("JOIN " + s); 
    writer.Flush(); 


    string trimmedString = string.Empty; 


    CHANNEL = s; 
} 

Malheureusement quand mon mannequin IRC entre dans une pièce avec un mot de passe défini, il écrit le mot de passe, si je fais changer de chaîne avec une commande tel que #lol test

test étant le mot de passe, puisque CHANNEL = s; il écrit le mot de passe avec la commande

writer.WriteLine("PRIVMSG " + CHANNEL + " :" + "Hello"); 

C'est la seule façon d'écrire à l'IRC est si il y a un moyen pour le « canal » pour être que le début du texte et juste #lol il doesn Ne pas écrire le mot de passe?

J'espère que vous comprenez mon problème.

Répondre

2

Vous pouvez diviser sur un espace et prendre le premier élément:

CHANNEL = s.Split(' ')[0]; 

Cela se traduirait par { "#lol", "test" } bien, idéalement, vérifier au préalable:

string input = "#lol test"; 
string channel = ""; 
string key = ""; 
if (input.Contains(" ")) 
{ 
    string[] split = input.Split(' '); 
    channel = split[0]; 
    key = split[1]; 
} 
else 
{ 
    channel = input; 
} 
Console.WriteLine("Chan: {0}, Key: {1}", channel, key); 
0
CHANNEL = s.Substring(0,s.IndexOf(" "));