2009-03-27 12 views
1

Das ist, was ich bisher geschrieben:Ersetzen Sie jeden Buchstaben des Alphabets in einer Zeichenfolge?

string omgwut; 
omgwut = textBox1.Text; 
omgwut = omgwut.Replace(" ", "snd\\space.wav"); 
omgwut = omgwut.Replace("a", "snd\\a.wav"); 

Nun, das Problem ist, dass dieser Code

"snd\space.wav" 

in

"snd\spsnd\a.wavce.wsnd\a.wavv" 

in Zeile vier drehen würde. Nicht was ich will! Jetzt weiß ich, dass ich nicht gut in C# bin, deshalb frage ich.

Lösungen wären großartig! Vielen Dank!

+0

Wir brauchen mehr Informationen. Was ist ein Beispiel für den tatsächlichen Text, der in der Textbox erscheinen würde? –

+0

@ a2h: Ich hatte es schwer, deinem Beitrag zu folgen. Ich denke, es ist jetzt besser lesbar - wenn Sie die Bearbeitung nicht mögen, können Sie sie zurücknehmen. – Tomalak

Antwort

3

Sie müssen immer noch die Funktion getSoundForChar() schreiben, aber das sollte tun, was Sie fragen. Ich bin mir jedoch nicht sicher, ob das, was du fragst, tun wird, was du willst, d. H., Den Sound für den zugehörigen Charakter spielen. Sie sind vielleicht besser dran, sie in eine Liste <String> dafür zu setzen.

StringBuilder builder = new StringBuilder(); 
foreach (char c in textBox1.Text) 
{ 
    string sound = getSoundForChar(c); 
    builder.Append(sound); 
} 
string omgwut = builder.ToString(); 

Hier ist ein Anfang:

public string getSoundForChar(char c) 
{ 
    string sound = null; 
    if (sound == " ") 
    { 
     sound = "snd\\space.wav"; 
    } 
    ... handle other special characters 
    else 
    { 
     sound = string.Format("snd\\{0}.wav", c); 
    } 
    return sound; 
} 
+0

Der Typ oder der Namespacename 'StringBuilder' konnte nicht gefunden werden (fehlt eine using-Direktive oder eine Assemblyreferenz?) – unrelativity

+0

add "using System.Text;" am Anfang der Datei. – atsjoo

+0

Und ich dachte, ich könnte gut herausfinden, was Leute meinen, wenn sie Fragen stellen. Ich bin beeindruckt, dass du verstanden hast, was er wirklich gefragt hat. –

1

Das Problem besteht darin, dass Sie mehrere Durchgänge der Daten durchführen. Versuchen Sie einfach, durch die Zeichen der Zeichenfolge in einer Schleife zu gehen und jedes "von" Zeichen durch seine "to" Zeichenfolge zu ersetzen. Auf diese Weise gehen Sie nicht über die Zeichenfolge zurück und wiederholen die bereits ersetzten Zeichen.

Erstellen Sie auch eine separate Ausgabezeichenfolge oder ein Array, anstatt das Original zu ändern. Verwenden Sie idealerweise einen StringBuilder, und fügen Sie die neue Zeichenfolge (oder das ursprüngliche Zeichen, wenn dieses Zeichen nicht ersetzt wird) an diesen an.

0

ich einen Weg weiß nicht gleichzeitig auf verschiedene Zeichen in C# zu ersetzen.

Sie könnten alle Zeichen durchlaufen und eine Ergebniszeichenfolge daraus erstellen (verwenden Sie einen Zeichenfolgengenerator, wenn die Eingabezeichenfolge lang sein kann). Für jedes Zeichen fügen Sie seine Ersetzung an die Ergebniszeichenfolge (Builder) an.

Aber was versuchst du zu tun? Ich kann mir keine nützliche Anwendung zum Anhängen von Dateipfaden ohne Trennzeichen vorstellen.

Verwandte Themen