Wie entferne ich die ersten 3 Zeichen aus NSString?

70

Ich habe eine Saite wie diese "A. rahul VyAs"

und ich möchte "A." und das Leerzeichen nach dem "A." so dass neue Zeichenfolge "rahul VyAs" wäre

Wie erreiche ich das?

Rahul Vyas
quelle

Antworten:

248

Sie können die NSStringInstanzmethoden substringWithRange:oder verwendensubstringFromIndex:

NSString *str = @"A. rahul VyAs";
NSString *newStr = [str substringWithRange:NSMakeRange(3, [str length]-3)];

oder

NSString *str = @"A. rahul VyAs";
NSString *newStr = [str substringFromIndex:3];
Alex Rozanski
quelle
12
Sie sollten auch überprüfen, ob die Zeichenfolge mindestens 3 Zeichen enthält.
MANIAK_dobrii
2

Versuche dies,

char *string=[@"A. rahul VyAs" cStringUsingEncoding:NSUTF8StringEncoding];
char *subString=&name[3];
NSString *newString=[NSString stringWithCString:subString encoding:NSUTF8StringEncoding];
rakeshNS
quelle
1

Dies ist eine Lösung, die ich speziell zum Entfernen regelmäßig auftretender Präfixe und zum Lösen der Antwort auf die Frage gesehen habe. Wie entferne ich "A"?

NSString * name =  @"A. rahul VyAs";
NSString * prefixToRemove = @"A. "; 
name = [name stringByReplacingOccurrencesOfString:prefixToRemove withString:@""];

Dieser Code entfernt, was Sie anweisen, zu entfernen / zu ändern, wenn der Zeichensatz vorhanden ist, z. B. "A." , selbst wenn sich die drei Zeichen (oder mehr / weniger) in der Mitte der Zeichenfolge befinden.

Wenn Sie entfernen wollten, rahulkönnen Sie. Es ist insofern unterschiedlich, als Sie genau angeben, was entfernt oder geändert werden soll. Wenn es irgendwo in der Zeichenfolge vorhanden ist, wird es entfernt oder geändert.

Wenn Sie nur eine bestimmte Anzahl von Zeichen von der Vorderseite des Textes entfernen möchten, die immer zufällig oder unbekannt sind, verwenden Sie die Methode [Zeichenfolgenlänge] als oberste Antwort.

Wenn Sie bestimmte Zeichen entfernen oder ändern möchten, die wiederholt angezeigt werden, wird dies mit der von mir verwendeten Methode aktiviert, ähnlich wie bei Wordsearch in Dokumenteditoren.

App Dev Guy
quelle
Dies funktioniert nur, wenn die Zeichenfolge mit "A" beginnt und nirgendwo anders "A" enthält. Zum Beispiel wird es nicht für "BlahA. Hallo"
Fogmeister
Ok, also möchte ich die ersten drei Zeichen aus diesen beiden Zeichenfolgen entfernen ... "Hallo Welt!" Und "Foo Bar". Wie machen Sie das mit Ihrer Lösung?
Fogmeister
@Fogmeister, lies das Update. Der Punkt ist, wenn es einen gemeinsamen Zeichensatz oder etwas Bestimmtes gibt, wie in der gestellten Frage angegeben A. , können Sie ihn ohne Zählung entfernen. Es ist nur ein weiterer Vorschlag, kein Grund zur Frustration :-)
App Dev Guy
Er sagt nicht, dass es einen gemeinsamen Anfang gibt. Er gibt ein Beispiel für etwas, das er gerne tun würde. Der Fragentitel lautet: Wie entferne ich die ersten drei Buchstaben? Nicht wie entferne ich "A.".
Fogmeister
@Fogmeister Ich antwortete, wie man die ersten drei Zeichen entfernt, wie gefragt. Meine Antwort entfernt sein Beispiel von drei Zeichen. Außerdem wird erklärt, wie und wann es verwendet wird. Es ist ein weiterer Vorschlag, und mein Update hat klargestellt, dass das entfernt wird, was Sie ausdrücklich angeben, um es zu entfernen. Es scheint wirklich so, als ob Sie nicht picken.
App Dev Guy
-1

So einfach ist das:

myString = [myString subStringFromIndex:3]

Das ist es.

Alex Zavatone
quelle