• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

NSString suchen & ersetzen

Alecco

Transparent von Croncels
Registriert
17.02.09
Beiträge
306
Hi,

ich versuche gerade den Text aus einem UITextView zu durchsuchen. Ich habe meinen Text in einem NSString gespichert und möchte nun nach einem Suchwort suchen:

Code:
NSString *satz = @"hallo apfeltalk, das ist ein mustertext";
NSString *wort = @"apfel";
NSString *gefunden;

aRange = [satz rangeOfString:wort options:(NSCaseInsensitiveSearch | NSBackwardsSearch)];
gefunden = NSStringFromRange(aRange);
NSLog(gefunden);
Damit wird mir in der Konsole auch die richtige Position angezeigt.

Meine Frage lautet: Wie kann ich nun den auf den NSString satz zugreifen? Z.b. möchte ich suchen&ersetzen. Kann ich auf einen NSString wie auf ein Array zugreifen?

:innocent:
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Ein NSString ist nicht veränderbar. Dafür musst Du schon einen NSMutableString nehmen.

MacApple
 

Daniel S.

Golden Delicious
Registriert
12.07.09
Beiträge
11
Ein NSString Objekt an sich kannst du nicht verändern, wie ja bereits gesagt wurde. Eine Möglichkeit ist, einen veränderbaren String - einen NSMutableString - zu verwenden, wie auch schon bereits gesagt wurde.

Die Zweite Möglichkeit sind bestimmte Methoden von NSString, die dir ein neues, verändertes NSString Objekt zurückliefern.
Hierzu gibt es z.B. folgende Methode.
Code:
- (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement

Schau dir am Besten mal die NSString Class Reference von Apple an. Vor allem die Methoden unter der Überschrift "Replacing Substrings"
 

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Wenn du mit CStrings (also char-pointers) vertraut bist, dann findest du auch nützliche Methoden und kannst den "Umweg" über C selbst machen. So in etwa:

Code:
NSString *myString;
const char *cstr;

// * C string holen:
[myString getCString:cstr];
// - oder:
cstr = [myString cStringUsingEncoding:(_encoding option_)];

// * string modifizieren...

// * String wieder setzen:
NSString *myModString = [NSString stringWithCString:cstr encoding:(_encoding option_)];

Beachte: Du musst nie eine Länge angeben, weil CStrings definitionsgemäss nullterminiert sein müssen! just to keep that in mind... :)

Gruss ppocket
 
Zuletzt bearbeitet:

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Wenn du mit CStrings (also char-pointers) vertraut bist, dann findest du auch nützliche Methoden und kannst den "Umweg" über C selbst machen.
Uhhh, ich rate dringend von solchen Umwegen ohne Not ab. Mit C-Strings lassen sich hervorragend Buffer Overflows basteln.

MacApple
 

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Ich weiss schon. Falls er aber vertraut damit ist, tut sich eine für ihn altbekannte Möglichkeit auf, die er vielleicht vorher nicht in Betracht gezogen hat. Overflows hin oder her, wenn er die verhindern kann, kein Problem :D. Ich würde das auch nie im Leben so machen :).

Gruss ppocket
 

MacApple

Schöner von Bath
Registriert
05.01.04
Beiträge
3.652
Ich weiss schon. Falls er aber vertraut damit ist, tut sich eine für ihn altbekannte Möglichkeit auf, die er vielleicht vorher nicht in Betracht gezogen hat. Overflows hin oder her, wenn er die verhindern kann, kein Problem :D.
Es gibt massenweise Programmierer, die mit C-Strings vertraut sind und trotzdem schleichen sich immer wieder solche Fehler ein.

Ich würde das auch nie im Leben so machen :).
Dann solltest Du das anderen auch nicht vorschlagen. ;)

MacApple
 

Poljpocket

Salvatico di Campascio
Registriert
07.01.07
Beiträge
432
Es war kein Vorschlag, nur ein Hinweis darauf, dass es diese Möglichkeit auch noch geben würde :)

Gruss ppocket