Ich möchte einen Charakter von irgendwo in einem NSString bekommen. Ich möchte, dass das Ergebnis ein NSString ist.
Dies ist der Code, den ich verwende, um ein einzelnes Zeichen beim Indexieren zu erhalten:
[[s substringToIndex:i] substringToIndex:1]
Gibt es einen besseren Weg, dies zu tun?
objective-c
cocoa-touch
nsstring
Knoten Ninja
quelle
quelle
Antworten:
Dadurch wird auch ein Zeichen am Index i als NSString abgerufen, und Sie verwenden nur eine NSRange-Struktur anstelle eines zusätzlichen NSString.
NSString * newString = [s substringWithRange:NSMakeRange(i, 1)];
quelle
Wenn Sie nur einen Charakter von einem NSString erhalten möchten, können Sie dies versuchen.
- (unichar)characterAtIndex:(NSUInteger)index;
So verwendet:
NSString *originalString = @"hello"; int index = 2; NSString *theCharacter = [NSString stringWithFormat:@"%c", [originalString characterAtIndex:index-1]]; //returns "e".
quelle
Ihr Vorschlag funktioniert nur für einfache Zeichen wie ASCII. NSStrings speichern Unicode und wenn Ihr Charakter mehrere Unichars lang ist, könnten Sie Kauderwelsch bekommen. Verwenden
- (NSRange)rangeOfComposedCharacterSequenceAtIndex:(NSUInteger)index;
wenn du bestimmen willst, wie viele Unichars dein Charakter ist. Ich benutze dies, um meine Zeichenfolgen zu durchlaufen und festzustellen, wo die Zeichenränder auftreten.
Die vollständige Unicode-Fähigkeit ist ein wenig Arbeit, hängt jedoch davon ab, welche Sprachen Sie verwenden. Ich sehe viel asiatischen Text, so dass die meisten Zeichen aus einem Raum übergehen und es Arbeit ist, die ich tun muss.
quelle
NSMutableString *myString=[NSMutableString stringWithFormat:@"Malayalam"]; NSMutableString *revString=@""; for (int i=0; i<myString.length; i++) { revString=[NSMutableString stringWithFormat:@"%c%@",[myString characterAtIndex:i],revString]; } NSLog(@"%@",revString);
quelle