Di Objective-C untuk iOS, bagaimana saya menghapus karakter terakhir dari string menggunakan aksi tombol?
Di Objective-C untuk iOS, bagaimana saya menghapus karakter terakhir dari string menggunakan aksi tombol?
Di kelas pengontrol Anda, buat metode tindakan yang akan Anda kaitkan tombol di dalam Interface Builder. Di dalam metode itu Anda dapat memotong string Anda seperti ini:
if ([string length] > 0) {
string = [string substringToIndex:[string length] - 1];
} else {
//no characters to delete... attempting to do so will result in a crash
}
Jika Anda ingin cara mewah melakukan ini hanya dalam satu baris kode Anda dapat menuliskannya sebagai:
string = [string substringToIndex:string.length-(string.length>0)];
* Penjelasan potongan kode mewah satu baris:
Jika ada karakter yang akan dihapus (yaitu panjang string lebih besar dari 0)
(string.length>0)
mengembalikan 1
sehingga membuat kode kembali:
string = [string substringToIndex:string.length-1];
Jika TIDAK ada karakter untuk dihapus (yaitu panjang karakter string TIDAK lebih besar dari 0)
(string.length>0)
mengembalikan 0
sehingga membuat kode kembali:
string = [string substringToIndex:string.length-0];
Yang mencegah crash.
string != nil && [string length] > 0
. Kemungkinan variabel string Donal sedang dirilis berlebihan.Jika ini adalah NSMutableString (yang saya sarankan karena Anda mengubahnya secara dinamis), Anda dapat menggunakan:
sumber
Solusi yang diberikan di sini sebenarnya tidak memperhitungkan karakter Unicode multi-byte ("karakter tersusun"), dan dapat mengakibatkan string Unicode tidak valid.
Bahkan, file header iOS yang berisi deklarasi
substringToIndex
berisi komentar berikut:Lihat cara menggunakan
rangeOfComposedCharacterSequenceAtIndex:
untuk menghapus karakter terakhir dengan benar.sumber
Dokumentasi adalah teman Anda,
NSString
mendukung panggilansubstringWithRange
yang dapat mempersingkat string yang Anda kembalikan String yang dipersingkat. Anda tidak dapat mengubah contohNSString
itu tidak berubah. Jika Anda memilikiNSMutableString
adalah memiliki metode yang disebutdeleteCharactersInRange
yang dapat memodifikasi string di tempatsumber
substringWithRange:
mengembalikan aNSString*
. Perhatikan pointer.