Pembaruan untuk Swift 4
Di Swift 4, Stringmenyesuaikan Collectionlagi, sehingga memungkinkan untuk menggunakan dropFirstdan dropLastmemangkas awal dan akhir string. Hasilnya adalah tipe Substring, jadi Anda harus meneruskannya ke Stringkonstruktor untuk mendapatkan kembali String:
let str = "hello"
let result1 = String(str.dropFirst()) // "ello"
let result2 = String(str.dropLast()) // "hell"
dropFirst()dan dropLast()juga gunakan Intuntuk menentukan jumlah karakter yang akan dihapus:
let result3 = String(str.dropLast(3)) // "he"
let result4 = String(str.dropFirst(4)) // "o"
Jika Anda menentukan lebih banyak karakter untuk dilepaskan daripada di string, hasilnya akan menjadi string kosong ( "").
let result5 = String(str.dropFirst(10)) // ""
Pembaruan untuk Swift 3
Jika Anda hanya ingin menghapus karakter pertama dan ingin mengubah string asli pada tempatnya, lihat jawaban @ MickMacCallum. Jika Anda ingin membuat string baru dalam prosesnya, gunakan substring(from:). Dengan ekstensi ke String, Anda dapat menyembunyikan keburukan dari substring(from:)dan substring(to:)membuat tambahan yang berguna untuk memangkas awal dan akhir dari String:
extension String {
func chopPrefix(_ count: Int = 1) -> String {
return substring(from: index(startIndex, offsetBy: count))
}
func chopSuffix(_ count: Int = 1) -> String {
return substring(to: index(endIndex, offsetBy: -count))
}
}
"hello".chopPrefix() // "ello"
"hello".chopPrefix(3) // "lo"
"hello".chopSuffix() // "hell"
"hello".chopSuffix(3) // "he"
Seperti dropFirstdan dropLastsebelumnya, fungsi ini akan macet jika tidak ada cukup huruf yang tersedia di String. Tanggung jawab ada pada pemanggil untuk menggunakannya dengan benar. Ini adalah keputusan desain yang valid. Seseorang dapat menulisnya untuk mengembalikan opsional yang kemudian harus dibuka oleh pemanggil.
Swift 2.x
Sayangnya di Swift 2 , dropFirstdan dropLast(solusi terbaik sebelumnya) tidak senyaman sebelumnya. Dengan ekstensi ke String, Anda dapat menyembunyikan keburukan substringFromIndexdan substringToIndex:
extension String {
func chopPrefix(count: Int = 1) -> String {
return self.substringFromIndex(advance(self.startIndex, count))
}
func chopSuffix(count: Int = 1) -> String {
return self.substringToIndex(advance(self.endIndex, -count))
}
}
"hello".chopPrefix() // "ello"
"hello".chopPrefix(3) // "lo"
"hello".chopSuffix() // "hell"
"hello".chopSuffix(3) // "he"
Seperti dropFirstdan dropLastsebelumnya, fungsi ini akan macet jika tidak ada cukup huruf yang tersedia di String. Tanggung jawab ada pada pemanggil untuk menggunakannya dengan benar. Ini adalah keputusan desain yang valid. Seseorang dapat menulisnya untuk mengembalikan opsional yang kemudian harus dibuka oleh pemanggil.
Di Swift 1.2 , Anda harus memanggil chopPrefixseperti ini:
"hello".chopPrefix(count: 3) // "lo"
atau Anda dapat menambahkan garis bawah _ke definisi fungsi untuk menyembunyikan nama parameter:
extension String {
func chopPrefix(_ count: Int = 1) -> String {
return self.substringFromIndex(advance(self.startIndex, count))
}
func chopSuffix(_ count: Int = 1) -> String {
return self.substringToIndex(advance(self.endIndex, -count))
}
}
advancesemuanya dengan mentransmisikandisplay.text!ke NSString. Saya tidak mengatakan itu solusi yang baik - hanya mengoreksi kemungkinan kesalahpahaman. Dengan NSString, Anda dapat mengindeksnya dengan Int. - Dan alasan Anda tidak dapat mengindeks dengan Int bukan karena Unicode; itu karena Karakter dapat terdiri dari beberapa titik kode gabungan.