Lebih mudah lagi di Swift:
let string : String = "Hello 🐶🐮 🇩🇪"
let characters = Array(string)
println(characters)
// [H, e, l, l, o, , 🐶, 🐮, , 🇩🇪]
Ini menggunakan fakta-fakta itu
- sebuah
Array
dapat dibuat dari SequenceType
, dan
String
sesuai dengan SequenceType
protokol, dan generator urutannya menyebutkan karakter.
Dan karena string Swift memiliki dukungan penuh untuk Unicode, ini berfungsi bahkan dengan karakter di luar "Basic Multilingual Plane" (seperti 🐶) dan dengan cluster grapheme yang diperluas (seperti 🇩🇪, yang sebenarnya terdiri dari dua skalar Unicode).
Pembaruan: Pada Swift 2, String
tidak lagi sesuai
SequenceType
, tetapi characters
properti menyediakan urutan karakter Unicode:
let string = "Hello 🐶🐮 🇩🇪"
let characters = Array(string.characters)
print(characters)
Ini bekerja di Swift 3 juga.
Pembaruan: Pada Swift 4, String
adalah (lagi) kumpulan dari
Character
s:
let string = "Hello 🐶🐮 🇩🇪"
let characters = Array(string)
print(characters)
// ["H", "e", "l", "l", "o", " ", "🐶", "🐮", " ", "🇩🇪"]
let joined = ", ".join(characters);
) menyebabkan'String' is not identical to 'Character'
kesalahan?", ".join(...)
mengharapkan array string. Jawaban devxoul di bawah ini menunjukkan bagaimana Anda dapat memecah menjadi array string.characters
adalah koleksi dan tampilan karakter string. Membuat array dari karakter membuat salinan. - Tentu saja dapat mengakses karakter secara langsung:for i in string.characters.indices { print(string.characters[i]) }
atau hanyafor c in string.characters { print(c) }
Edit (Swift 4)
Di Swift 4, Anda tidak harus menggunakan
characters
untuk menggunakannyamap()
. Lakukan sajamap()
pada String.Atau jika Anda lebih suka lebih pendek:
"ABC".map(String.init)
(2-byte 😀)Edit (Swift 2 & Swift 3)
Di Swift 2 dan Swift 3, Anda dapat menggunakan
map()
fungsi untukcharacters
properti.Asli (Swift 1.x)
Jawaban yang diterima tampaknya bukan yang terbaik, karena urutan yang dikonversi
String
bukanlahString
urutan, tetapiCharacter
:Ini di bawah ini berfungsi untuk saya:
Referensi untuk fungsi global
map()
ada di sini: http://swifter.natecook.com/func/map/sumber
arr = map(str) { String($0) }
Array
initializer sebagai gantinya:Array("ABC".characters)
"ABC".characters
danArray("ABC".characters)
."ABC".characters
mengembalikan tipeString.CharacterView
. Untuk mengonversinya menjadi sebuah array, khususnya tipe[Character]
,, Anda harus menggunakanArray
initializer di atasnya.[String]
bukannya[Character]
karena op ingin string array :)Ada juga fungsi yang berguna ini pada String: komponen (dipisahkan oleh: String)
Bekerja dengan baik untuk menangani string yang dipisahkan oleh karakter seperti ";" atau bahkan "\ n"
sumber
Diperbarui untuk Swift 4
Inilah 3 cara.
Dalam beberapa kasus, yang benar-benar diinginkan orang adalah cara untuk mengubah string menjadi array string kecil dengan panjang masing-masing 1 karakter. Berikut adalah cara yang sangat efisien untuk melakukan itu:
Cepat 3
Inilah 3 cara.
Dalam beberapa kasus, yang benar-benar diinginkan orang adalah cara untuk mengubah string menjadi array string kecil dengan panjang masing-masing 1 karakter. Berikut adalah cara yang sangat efisien untuk melakukan itu:
Atau Anda dapat menambahkan ekstensi ke String.
Maka Anda dapat menyebutnya seperti ini:
sumber
sumber
Jawaban Martin R adalah pendekatan terbaik, dan seperti yang dia katakan, karena String sesuai dengan protokol SquenceType, Anda juga dapat menghitung string, mendapatkan setiap karakter pada setiap iterasi.
sumber
for character in characters { charactersArray.append(character)}
tanpaenumeration()
Di Swift 4, seperti
String
koleksiCharacter
, Anda perlu menggunakanmap
sumber
Cara mudah untuk melakukannya adalah dengan
map
variabel dan mengembalikan masingCharacter
- masing sebagaiString
:Outputnya seharusnya
["h", "e", "l", "l", "o"]
.sumber
Anda juga dapat membuat ekstensi:
sumber
sumber
untuk fungsi pada String: komponen (dipisahkan oleh: String)
dalam Swift 5.1
ubah ke:
string.split(separator: "/")
sumber