Wie würde ich in Objective-C für iOS das letzte Zeichen einer Zeichenfolge mithilfe einer Schaltflächenaktion entfernen?
Wie würde ich in Objective-C für iOS das letzte Zeichen einer Zeichenfolge mithilfe einer Schaltflächenaktion entfernen?
Erstellen Sie in Ihrer Controller-Klasse eine Aktionsmethode, mit der Sie die Schaltfläche in Interface Builder verbinden. Innerhalb dieser Methode können Sie Ihre Saite wie folgt kürzen:
if ([string length] > 0) {
string = [string substringToIndex:[string length] - 1];
} else {
//no characters to delete... attempting to do so will result in a crash
}
Wenn Sie eine ausgefallene Methode in nur einer Codezeile suchen, können Sie diese wie folgt schreiben:
string = [string substringToIndex:string.length-(string.length>0)];
* Erklärung der Phantasie einzeiligen Code - Schnipsel:
Wenn es ein Zeichen zu löschen ist (dh die Länge der Zeichenfolge größer als 0)
(string.length>0)
kehrt 1
somit den Code Rückkehr zu machen:
string = [string substringToIndex:string.length-1];
Wenn es kein Zeichen (dh die Länge der löschen ist Zeichenfolge ist NICHT größer als 0) gibt
(string.length>0)
zurück, 0
wodurch der Code zurückgegeben wird:
string = [string substringToIndex:string.length-0];
Dies verhindert Abstürze.
string != nil && [string length] > 0
. Es besteht die Möglichkeit, dass Donals String-Variable über freigegeben wird.Wenn es sich um einen NSMutableString handelt (den ich empfehlen würde, da Sie ihn dynamisch ändern), können Sie Folgendes verwenden:
quelle
Die hier angegebenen Lösungen berücksichtigen tatsächlich keine Mehrbyte-Unicode-Zeichen ("zusammengesetzte Zeichen") und können zu ungültigen Unicode-Zeichenfolgen führen.
Tatsächlich enthält die iOS-Headerdatei, die die Deklaration von
substringToIndex
enthält, den folgenden Kommentar:Hier erfahren Sie, wie Sie
rangeOfComposedCharacterSequenceAtIndex:
das letzte Zeichen korrekt löschen.quelle
Die Dokumentation ist dein Freund,
NSString
unterstützt einen AufrufsubstringWithRange
, der die Zeichenfolge verkürzen kann, die du hast, um die verkürzte Zeichenfolge zurückzugeben. Sie können eine Instanz nicht ändern, dieNSString
unveränderlich ist. Wenn Sie eineNSMutableString
is haben, wird eine Methode aufgerufendeleteCharactersInRange
, mit der die Zeichenfolge geändert werden kannquelle
substringWithRange:
gibt a zurückNSString*
. Beachten Sie den Zeiger.