Wie bekomme ich die ersten drei Zeichen eines NSString?

104

Wie kann ich die ersten drei Zeichen eines NSString zurückgeben?

cgossain
quelle

Antworten:

263
 mystr=[mystr substringToIndex:3];

Stellen Sie sicher, dass Ihre Zeichenfolge mindestens 3 Kanal hat. Andernfalls stürzt die App ab.

Hier sind einige andere Links, um die NSsting-Operationen zu überprüfen ...

Link1

Link2

Apple Link

Spiel läd
quelle
21
Hinweis: Fehler "Bereich oder Index außerhalb der Grenzen" möglich, wenn Sie die Länge nicht überprüfen, um sicherzustellen, dass sie 3 oder mehr Zeichen lang ist
Ryan Bavetta
Ich bin sehr neu und habe nach dieser Frage gesucht, um meine eigene zu beantworten. Wird diese Antwort nicht die ersten drei Zeichen entfernen? Ich verwende dieselbe Syntax, um die Anzahl der von Ihnen festgelegten Zeichen zu ENTFERNEN. Ich liege wahrscheinlich falsch, dachte aber, ich sollte zumindest fragen.
@RyanBavetta Was ist, wenn die Zeichenfolge, mit der Sie dies tun, beispielsweise eine Datumszeichenfolge ist, die Ihr Code zuvor erstellt hat, und Sie genau wissen, wie viele Zeichen sie enthält? Dann brauchen Sie sich sicherlich nicht mit einer if-Anweisung zu beschäftigen, um zu überprüfen, wie lange es dauert, oder?
Supertecnoboff
1
@GameLoading Ich habe Ihrer Antwort Code hinzugefügt, damit sie für Anfänger nicht abstürzt. Hoffe es macht dir nichts aus :)
iYoung
Verwenden Sie einfach mystr = [mystr substringToIndex: MIN (mystr.length, 3)], um Abstürze zu vermeiden :-)
LaborEtArs
62

Zunächst müssen Sie sicherstellen, dass die Zeichenfolge mindestens 3 Zeichen enthält:

NSString *fullString = /* obtain from somewhere */;
NSString *prefix = nil;

if ([fullString length] >= 3)
    prefix = [fullString substringToIndex:3];
else
    prefix = fullString;

substringToIndex: löst eine Ausnahme aus, wenn der von Ihnen angegebene Index das Ende der Zeichenfolge überschreitet.

Dreamlax
quelle
5
Oder wickeln Sie einen @ try / @ catch-Block ein. Dies ist jedoch eine bessere Antwort als die andere.
Alan Zeino
2

Der richtige Weg ist:

text = [text substringToIndex:NSMaxRange([text rangeOfComposedCharacterSequenceAtIndex:2])];

substringToIndex von NSString indiziert nach Codeeinheiten, Emoji benötigt zwei Codeeinheiten.

Überprüfen Sie den Index selbst.

Gipfel
quelle