Entfernen Sie das letzte Zeichen von NSString

73

Ich habe einige Probleme, bevor ich versuche, das letzte Zeichen eines NSStrings zu entfernen. Ich bin ein bisschen ein Neuling in Objective-C und ich habe keine Ahnung, wie ich das machen soll.

Könntet ihr mich zum Leuchten bringen?

Markus
quelle
7
"Könntet ihr mich zum Leuchten bringen? " Die Verwendung, die Sie suchen, ist " erleuchten Sie mich".

Antworten:

195
NSString *newString = [oldString substringToIndex:[oldString length]-1];

Beachten Sie immer die Dokumentation :


So fügen Sie für Ihren Fall relevanten Code hinzu:

NSString *str = textField.text;
NSString *truncatedString = [str substringToIndex:[str length]-1];
Sidyll
quelle
2
Mein Xcode scheint diesen "TeilstringToIndex" nicht zu "verstehen", er schreibt ihn nicht einmal automatisch. Ist es richtig?
Markus
1
Solange Sie #import <Foundation/Foundation.h>Mac OS X 10.0 oder höher / iOS 2.0 oder höher verwenden, ist es ja richtig. Stellen Sie sicher, dass Sie die in den Xcode-Einstellungen festgelegte Dokumentation herunterladen, um die automatische Vervollständigung der Methode zu erhalten.
@markus nennst du es in einem NSString? Veröffentlichen Sie für alle Fälle die Codezeile dort, wo Sie sie verwenden möchten.
Sidyll
@ darvids0n Vielleicht wird es in etwas anderem als einem String aufgerufen.
Sidyll
1
Wenn Sie Mac OS X vor 10.0 verwenden, bin ich beeindruckt. (Ja, es gab es! Sorta.)
Jonathan Grynspan
12

Versuche dies:

s = [s substringToIndex:[s length] - 1];
Mark Byers
quelle
1
Dies ist anfällig für Abstürze, wenn die NSString-Länge 0 ist. Fügen Sie eine Validierung hinzu: if ([s length]> 0) { s = [s substringToIndex: [s length] - 1]; }
Krischu
5
NSString *string = [NSString stringWithString:@"ABCDEF"];
NSString *newString = [string substringToIndex:[string length]-1];
NSLog(@"%@",newString);

Sie können = ABCDE sehen

alpertayfun
quelle
Bitte formatieren Sie Ihren Code mit der Option "{}" im Editor. :-)
John Parker
4
NSString = *string = @"abcdef";

string = [string substringToIndex:string.length-(string.length>0)];

Wenn ein zu löschendes Zeichen vorhanden ist (dh die Länge der Zeichenfolge größer als 0 ist), wird (string.length>0)1 zurückgegeben, sodass der Code Folgendes zurückgibt:

 string = [string substringToIndex:string.length-1]; 

Wenn KEIN Zeichen zum Löschen vorhanden ist (dh die Länge der Zeichenfolge ist NICHT größer als 0), wird (string.length>0)0 zurückgegeben, sodass der Code Folgendes zurückgibt:

string = [string substringToIndex:string.length-0]; 

das verhindert Abstürze.

Tahir Mehmood
quelle
1

Dieser Code gibt nur das letzte Zeichen der Zeichenfolge zurück und entfernt es nicht:

NSString *newString = [oldString substringToIndex:[oldString length]-1];

Sie können dies stattdessen verwenden, um das letzte Zeichen zu entfernen und die verbleibenden Werte einer Zeichenfolge beizubehalten:

str = [str substringWithRange:NSMakeRange(0,[str length] - 1)];

und auch mit substringToIndex mit zu einem NSString 0 Länge wird zu Abstürzen führen.

Sie sollten vorher eine Validierung hinzufügen, wie folgt:

if ([str length] > 0) {

   str = [str substringToIndex:[s length] - 1];

}

Damit ist es sicher, die Teilzeichenfolgenmethode zu verwenden.

HINWEIS: Apple lehnt Ihre Anwendung ab, wenn sie für Abstürze anfällig ist.

krischu
quelle
0

Einfacher und bester Ansatz

[mutableString deleteCharactersInRange:NSMakeRange([myRequestString length]-1, 1)];
Mayur Sardana
quelle