Yanıtlar:
Denetleyici sınıfınızda, düğmeyi Arayüz Oluşturucu'ya bağlayacağınız bir eylem yöntemi oluşturun. Bu yöntemin içinde dizenizi şu şekilde kırpabilirsiniz:
if ([string length] > 0) {
string = [string substringToIndex:[string length] - 1];
} else {
//no characters to delete... attempting to do so will result in a crash
}
Bunu sadece bir kod satırında yapmanın süslü bir yolunu istiyorsanız, şöyle yazabilirsiniz:
string = [string substringToIndex:string.length-(string.length>0)];
* Süslü tek satırlık kod snippet'inin açıklaması:
Silinecek bir karakter varsa (yani dizenin uzunluğu 0'dan büyükse)
(string.length>0)
, 1
böylece kod döndürme yapar:
string = [string substringToIndex:string.length-1];
Silinecek bir karakter DEĞİLSE (yani dize 0'dan büyük DEĞİLDİR)
(string.length>0)
döndürür 0
böylece kod döndürme:
string = [string substringToIndex:string.length-0];
Bu çökmeleri önler.
string != nil && [string length] > 0
. Muhtemelen Donal'ın dize değişkeni aşırı serbest bırakılıyor.
Bir NSMutableString (dinamik olarak değiştirdiğiniz için tavsiye ederim) ise, kullanabilirsiniz:
[myString deleteCharactersInRange:NSMakeRange([myRequestString length]-1, 1)];
Burada verilen çözümler aslında çok baytlı Unicode karakterleri ("birleşik karakterler") dikkate almaz ve geçersiz Unicode dizeleriyle sonuçlanabilir.
Aslında, bildirimini içeren iOS başlık dosyası substringToIndex
aşağıdaki yorumu içerir:
İpucu: Oluşturulan karakterlerin parçalanmasını önlemek için rangeOfComposedCharacterSequencesForRange: ile kullanın
Son karakteri doğru bir şekilde silmek için nasıl kullanılacağınırangeOfComposedCharacterSequenceAtIndex:
görün .
Belgeler sizin dostunuzdur, kısaltılmış String döndürdüğünüz dizeyi kısaltabilecek NSString
bir aramayı destekler substringWithRange
. NSString
Değişmez bir örneğini değiştiremezsiniz. Eğer bir is'iniz varsa dizeyi yerinde değiştirebilecek NSMutableString
bir yöntem var deleteCharactersInRange
.
...
NSRange r;
r.location = 0;
r.size = [mutable length]-1;
NSString* shorted = [stringValue substringWithRange:r];
...
substringWithRange:
döndürür NSString*
. İşaretçiyi not edin.