Leerzeichen finden und ersetzen

  • Leerzeichen finden und ersetzen

    Hallo zusammen,

    hab hier ein Problem, bei dem Ihr mir sicher helfen könnt.

    Ich möchte in einem String alle Leerzeichen durch einen Doppelpunkt ersetzen.

    Wenn ich folgendes mache:
    textNew = [text stringByReplacingOccurencesofString:@" " withString:@":"];

    wird es einfach ignoriert. Es passiert also nichts.

    Wenn ich folgendes versuche
    textNew = [text stringByReplacingOccurencesofString:@"\s" withString:@":"];

    dann bekomme ich die Warnung: Unkonown escape sequence '\s' und es passiert ebenfalls nichts.

    Bei Zeilenumbruch, bzw. Enter funzt es mit textNew = [text stringByReplacingOccurencesofString:@"\n" withString:@"*"];

    text und textNew sind beide vom Typ NSString.

    Was mache ich falsch?

    Danke im Voraus,

    wasa

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von wasa71 ()

  • wasa71 schrieb:

    Wenn ich folgendes mache:
    textNew = [text stringByReplacingOccurencesofString:@" " withString:":"];

    wird es einfach ignoriert. Es passiert also nichts.
    [...]
    Bei Zeilenumbruch, bzw. Enter funzt es mit textNew = [text stringByReplacingOccurencesofString:"\n" withString:"*"];
    Dumme Frage: Bist Du sicher, dass das in Deinem Ausgangstext Spaces sind und nicht etwa Tabs, geschützte Leerzeichen oder ähnliches Zeug?

    Carsten

    PS: Du hast ein paarmal "…" statt @"…" geschrieben. Ich nehme an, das ist in Deinem Code korrekt, also mit @
  • Hi BlueM,

    ups, stimmt. Habe hier tatsächlich einige Male vergessen das @ einzufügen. Werde ich gleich mal korrigieren.
    Aber, klar, im Code ist alles richtig, also @"...", sonst hätte der Compiler ja auch gemekert.

    Zu den Leerzeichen: der in "text" enthaltene String ist die Eingabe aus einem UITextField. Ich bin noch ein Newbie in der Iphone-Programmierung und gehe ich erstmal davon aus, dass jede Betätigung der Leertaste während der Eingabe ein Leerzeichen erzeugt.

    Sehe ich das falsch?

    wasa
  • eigentlich schon. Aber zur Sicherheit mach doch mal einen Breakpoint und
    lass die den String als Hex ausgeben. Dann siehst du was für
    Leerzeichen das sind
    Sorry, wenn ich jetzt so blöd frage, aber wie mache ich das in Obj-C?

    Habe danach gegoogelt und nur gefunden, dass es keine Methode gibt, die es direkt macht, und nur einige Posts zu Zahlen -- > Hex, mit der Bemerkung, das würde aber nicht für Text, bzw. Buchstaben gelten.

    Und wenn ich es hinkriegen sollte, wie bekomme ich denn über den Hex-Wert heraus was es für Leerzeichen sind? Also, was sagt mir der Wert, den ich dann bekomme denn?

    Gruß,

    wasa
  • Wenn es Dir nicht auf "das" Leerzeichen ankommt und Du wirklich alles Whitespace-artige ersetzen willst, solltest Du da nicht reinschauen müssen. NSCharacterSet ist Dein Freund. Eine robuste Möglichkeit ist z.B: diese:

    Quellcode

    1. s = [[s componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] componentsJoinedByString:@":"];

    Oder man könnte den String mit einem NSScanner durchgehen, um nach dem whitespaceCharacterSet zu suchen.
    Multigrad - 360°-Produktfotografie für den Mac