Saya tahu cara pemrograman melakukannya, tapi saya yakin ada cara bawaan ...
Setiap bahasa yang saya gunakan memiliki semacam representasi tekstual default untuk koleksi objek yang akan dimuntahkan ketika Anda mencoba menggabungkan Array dengan string, atau meneruskannya ke fungsi print (), dll. Apakah bahasa Swift Apple memiliki cara bawaan untuk dengan mudah mengubah Array menjadi String, atau apakah kita harus selalu eksplisit saat meringkas array?
array.description
atau jika Anda menginginkan pemisah khususarray.joined(separator: ",")
Jawaban:
Jika array berisi string, Anda dapat menggunakan metode
String
'sjoin
:Dalam Swift 2 :
Ini bisa berguna jika Anda ingin menggunakan pemisah tertentu (hip, kosong, koma, dll).
Kalau tidak, Anda bisa menggunakan
description
properti, yang mengembalikan representasi string dari array:Petunjuk: objek apa pun yang mengimplementasikan
Printable
protokol memilikidescription
properti. Jika Anda mengadopsi protokol itu di kelas / struct Anda sendiri, Anda membuatnya ramah cetakDalam Swift 3
join
menjadijoined
, misalnya[nil, "1", "2"].flatMap({$0}).joined()
joinWithSeparator
menjadijoined(separator:)
(hanya tersedia untuk Array of Strings)Dalam Swift 4
sumber
"-".join(array)
tidak lagi tersedia di Swift 2, Xcode 7 Beta 6, coba gunakanarray.joinWithSeparator("-")
joinWithSeparator
hanya tersedia untuk berbagai string. Jika Anda memiliki larik objek lain, maka gunakanmap
dulu. Misalnya,[1, 2, 3].map({"\($0)"}).joinWithSeparator(",")
Dengan Swift 5, sesuai dengan kebutuhan Anda, Anda dapat memilih salah satu kode contoh Playground berikut untuk menyelesaikan masalah Anda.
Mengubah array
Character
s menjadiString
tanpa pemisah:Mengubah array
String
s menjadiString
tanpa pemisah:Mengubah array
String
s menjadiString
dengan pemisah antara kata-kata:Mengubah array
String
s menjadiString
dengan pemisah antara karakter:Mengubah array
Float
s menjadiString
dengan pemisah antara angka:sumber
try JSONDecoder().decode([Int].self, from: Data(string.utf8))
Swift 2.0 Xcode 7.0 beta 6 dan seterusnya menggunakan
joinWithSeparator()
alih-alihjoin()
:joinWithSeparator
didefinisikan sebagai ekstensi aktifSequenceType
sumber
Cepat 3
sumber
Dalam Swift 4
sumber
Karena tidak ada yang menyebutkan pengurangan, ini dia:
Dalam semangat pemrograman fungsional 🤖
sumber
[0,1,1,0].map{"\($0)"}.reduce("",+)
. 😉[0,1,1,0].map(String.init).joined()
Untuk mengubah array String Opsional / Non-Opsional
Di sini flatMap , compactMap melompati nilai nil dalam array dan menambahkan nilai-nilai lain untuk memberikan string yang digabungkan.
sumber
Milik saya bekerja pada NSMutableArray dengan componentsJoinedByString
sumber
Di Swift 2.2 Anda mungkin harus membuang array ke NSArray untuk menggunakan componentsJoinedByString (",")
sumber
Jika Anda ingin membuang string kosong dalam array.
Jika Anda ingin memfilter nilai nil juga:
sumber
Hasilnya adalah >>> Pengembang iOS Mani Singh
sumber
Swift setara dengan apa yang Anda gambarkan adalah interpolasi string. Jika Anda memikirkan hal-hal seperti yang dilakukan JavaScript
"x" + array
, padanan dalam Swift adalah"x\(array)"
.Sebagai catatan umum, ada perbedaan penting antara interpolasi string vs
Printable
protokol. Hanya kelas tertentu yang sesuaiPrintable
. Setiap kelas dapat diinterpolasi dengan cara apapun. Itu membantu ketika menulis fungsi generik. Anda tidak harus membatasi diri diPrintable
kelas.sumber
Anda dapat mencetak objek apa pun menggunakan fungsi cetak
atau gunakan
\(name)
untuk mengonversi objek apa pun menjadi string.Contoh:
sumber
Buat ekstensi untuk
Array
:sumber
Pemisah bisa menjadi ide yang buruk untuk beberapa bahasa seperti bahasa Ibrani atau Jepang. Coba ini:
Untuk tipe data lainnya masing-masing:
sumber
jika Anda memiliki daftar larik string, lalu konversikan ke Int
itu akan memberi Anda nilai string
sumber
untuk semua jenis Elemen
sumber
Coba ini:
sumber
UNTUK SWIFT 3:
sumber
Jika pertanyaan Anda adalah sesuatu seperti ini: tobeFormattedString = ["a", "b", "c"] Output = "abc"
String(tobeFormattedString)
sumber
String
tidak memiliki penginisialisasi yang mampu melakukan itu. Entah Anda menggunakan ekstensi khusus atau perpustakaan pihak ketiga, atau Anda jelas-jelas salah.