Laden...

Leerzeichen suchen

Erstellt von andry vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.719 Views
A
andry Themenstarter:in
16 Beiträge seit 2008
vor 16 Jahren
Leerzeichen suchen

Hallo Ich haben einen String mit mehreren Wörtern die durch Leerzeichen getrennt sind z.B (Hallo Hallo Hallo)
Nun will ich direkt nach dem ersten Wort ein einzelnes Zeichen einfügen. Ich habe dafür das IndexOf benutzt was aber so nicht funktioniert hat. Die Ausgabe wird in eine Textdatei geschrieben.


StringBuilder sDEU1 = new StringBuilder(sDEU);


   int at;
   at = sDEU.IndexOf(" ");
   sDEU1.Insert(at, "#") 
J
3.331 Beiträge seit 2006
vor 16 Jahren

Zunächst willkommen!

Nun will ich direkt nach dem ersten Wort ein einzelnes Zeichen einfügen. Ich habe dafür das IndexOf benutzt was aber so nicht funktioniert hat.

"was aber so nicht funktioniert" ist keine ausreichende Problembeschreibung: Meckert der Compiler, gibt es einen Fehler zur Laufzeit, oder worin unterscheidet sich das tatsächliche Ergebnis vom erwarteten?

Klar ist, dass Du nicht sauber trennst. Du arbeitest parallel mit StringBuilder und string. IndexOf gibt es nur bei String, aber nicht beim StringBuilder (so hast Du es genutzt). Der StringBuilder wird geändert, aber nicht der String sDEU. Was wird denn in eine Textdatei geschrieben - sDEU oder sDEU1?

Jürgen

A
andry Themenstarter:in
16 Beiträge seit 2008
vor 16 Jahren

Ok sorry, ausgegeben wird sDeu1 was nicht funktioniert hat ist das er das Zeichen in der Texdatei nicht ausgibt. Compiler oder Laufzeitfehler gibt es deswegen keine.
das mit dem Trennen ist mir nicht ganz klar ich bin auch sehr unerfahren was C# angeht. sollte ich den stringbuilder weglassen und nur string benutzen oder wie?

D
496 Beiträge seit 2005
vor 16 Jahren

deinstring = deinstring.Replace(" ","#");

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

185 Beiträge seit 2005
vor 16 Jahren

Damit werden alle Leerzeichen ersetzt, es soll aber nur das Erste ersetzt werden, wenn ich das richtig verstanden habe.

A
andry Themenstarter:in
16 Beiträge seit 2008
vor 16 Jahren

Ja ich möchte nur Hinter dem ersten Wort ein Zeichen einfügen d.h ich will das Leerzeichen gar nicht ersetzen sondern nur dort ein Zeichen einfügen das Leerzeichen aber beibehalten. Deswegen habe ich auch das IndexOf benutzt, aber es wird wie gesagt kein Zeichen geschrieben. Die Verwendung einer variablen in dem Insert ist aber zulässsig oder? Sonst hätte ja auch der Compiler gemeckert

M
221 Beiträge seit 2008
vor 16 Jahren

Du kannst das Hallo Hallo Hallo via Split(' ') aufteilen, dann hast du ein Array mit 3 Teilen. Hier kannst du an das erste das Zeichen anhängen, und dann das Array wieder zu einem String zusammenfügen.

343 Beiträge seit 2007
vor 16 Jahren

warum einfach wenn's auch kompliziert geht?

Probiers doch damit:


  string s = "Hallo Hallo Hallo";
  string sneu = s.Insert(s.IndexOf(' '), "#");

Wenn wirklich nur ein Zeichen eingefügt werden muss ist das schneller und einfacher als über einen StringBuilder. Wenn viele Zeichen eingefügt werden sollen wäre StringBuilder wahrscheinlich besser geeignet (wenns um Performance geht)

Lg
Philipp

[- www.saftware.net -](http://www.saftware.net/)
M
221 Beiträge seit 2008
vor 16 Jahren

Diese Lösung ist natürlich die beste!
Den Insert hab ich übersehen, aber gut zu Wissen das es den gibt, ist sehr praktisch!

Klar wär es bei dieser Länge unsinn einen Stringbuilder zu verwenden!

A
andry Themenstarter:in
16 Beiträge seit 2008
vor 16 Jahren

Hm ja das mit dem String funktioniert leider auch nicht er will einfach da kein Zeichen reinschreiben. Vielleicht muss ich da noch ein wenig weiter aushohlen der String wird nämlich aus einer Datenbank mittels GetString geholt. aber wenn ich mit dem Debugger drüberschaue (Visual Studio 2005) zeigt er mir den String schon richtig an also müsste er ihn ja haben....
Die Syntac habe ich von prelis Post 1:1 übernommen, dabei noch die frage ob die Hochkommas '' zwingend verwendet werden müssen oder ob auch "" geht?

A
andry Themenstarter:in
16 Beiträge seit 2008
vor 16 Jahren

Ok sorry war mein Fehler ich hab es nur an der falschen Stelle eingefügt und dann in Der Texdatei nicht gefunden, danke für eure Hilfe 🤔