Zeichen in String ersetzen (war: java.util...)



  • Hallo!

    Ich möchte gerne die spacer aus einem String schneiden. Da habe ich folgendes im Archiv gefunden:

    String str = new String("10+20+30"); 
    String out = str.replace('+', ' ');
    

    SEHR SCHÖN 😋 😋
    Nur leider muß ich erst das java.util - Paket importieren.
    Wie macht man das?
    Wenn ich

    import java.util.regex.*;
    

    in die cpp schreibe, will er das nicht 😕 😕
    Habe bisher nur mit #include eingebunden...
    Hoffe ihr helft mir 😃
    DiV
    rookie12



  • Java hat wohl nix mit dem String zu tun... da hängt es woanders.



  • Möchtest du in's Java-Forum verschoben werden oder geht es dir tatsächlich um den C++Builder?



  • Nei, Nein! Sorry!
    Ich habe da bei der Suche wohl nicht nach BcB selektiert 🙄 🙄
    Das Problem bleibt aber: Wie kann ich (einfach) bestimmte Zeichen aus einem String eleminieren?

    Gruß
    rookie12



  • Falls du also doch den BCB meinst: sieh dir die Funktion StringReplace() an. Beispiele findest du in der Hilfe und/oder per Suchfunktion hier im Forum.



  • @Jansen du warst wohl eben schneller...
    StringReplace() ist suuuper!
    Nur leider kennt BcB1 das noch nicht. Da ich das Projekt mit 1 begonnen habe und ich bisher immer Probs mit konvertieren hatte, würde ich gerne 'ne elegante Lösung für BcB1 durchführen (ohne switch od. SubString)...

    DiV
    rookie12



  • Wenn nichts besseres gibt, habe ich mir sowas

    AnsiString text1,text2;
    text1 = "Hello Wold !.";
    for(int i = 0; i < text1.Length()+1; i++)
    {
      char curChar = text1[i];
      switch(curChar)
      {
        // spacer soll raus
        case ' ' :
    
    // nix ,machen;
        default:
          text2 += curChar;
      }
    }
    Label1->Caption = text2;
    }
    

    gedacht.
    Leider klappt es so auch nicht. Hab ich was falsch gemacht?

    DiV
    rookie12



  • "Klappt nicht" usw. ist keine vernünftige Problembeschreibung.

    Du hast die breaks im switch/case vergessen.
    Statt letzterem wäre eine einfache if-Abfrage aber ohnehin eher angebracht. Es sei denn, du willst mehrere verschiedene Zeichen ersetzen.



  • @ Jansen: Hast ja recht, ich habe etwas zu schnell gepostet.
    Habe aber zum Glück 'isspace' gefunden...

    // Spacer aus text1 u. text2 entfernen und in CAntwort bzw. CVergleich überführen
    for(int i = 0; i < text1.Length()+1; i++){
      char curChar = text1[i];
       if (isspace(curChar)){}
    else {CVergleich += curChar;}
    }
    for(int i = 0; i < text2.Length()+1; i++){
      char curChar = text2[i];
       if (isspace(curChar)){}
    else {CAntwort += curChar;}
    }
    

    Trotzdem Danke!

    Gruß
    roookie12



  • Was heisst hier 'aber' und 'trotzdem'?
    Schliesslich ist isspace nicht wirklich eleganter oder effizienter als ein direkter Vergleich zweier chars.

    Deine for-Schleifen funktionieren auch nicht korrekt: der Index von AnsiStrings beginnt bei 1, nicht bei 0.

    Und wozu das else? Du brauchst lediglich ein if.

    Denk mal drüber nach. 😉


Anmelden zum Antworten