Diberikan string input seperti " word1 word2 word3 word4 "
, apa pendekatan terbaik untuk memisahkan ini sebagai array string di Go? Perhatikan bahwa mungkin ada sejumlah spasi atau karakter spasi unicode di antara setiap kata.
Di Jawa saya hanya akan menggunakan someString.trim().split("\\s+")
.
(Catatan: kemungkinan duplikat string Pemisah menggunakan ekspresi reguler di Go tidak memberikan jawaban yang berkualitas baik. Harap berikan contoh sebenarnya, bukan hanya tautan ke regexp
atau strings
referensi paket.)
strings.Fields
jangan abaikan spasi di bagian yang dikutip.shlex
untuk godoc.org/github.com/google/shlex ituJika Anda menggunakan tip: regexp.Split
Membagi irisan menjadi beberapa substring yang dipisahkan oleh ekspresi dan mengembalikan potongan substring di antara ekspresi yang cocok.
Potongan yang dikembalikan oleh metode ini terdiri dari semua substring s yang tidak terdapat dalam potongan yang dikembalikan oleh FindAllString. Saat dipanggil pada ekspresi yang tidak berisi karakter meta, itu setara dengan strings.SplitN.
Contoh:
Hitungan menentukan jumlah substring yang akan dikembalikan:
sumber
Fields()
tidak akan mengembalikan string kosong. Jadi jumlah field yang dikembalikan akan bervariasi. Jika Anda mencoba mengurai sesuatu secara konsisten, itu tidak akan berhasil untuk Anda. Anda mungkin perlu menggunakan regex jika aFieldsFunc()
juga tidak berfungsi.Saya datang dengan yang berikut ini, tetapi itu tampaknya terlalu bertele-tele:
yang akan dievaluasi menjadi:
Apakah ada ekspresi yang lebih kompak atau lebih idiomatis?
sumber