Saya memisahkan string berdasarkan spasi putih sebagai berikut:
string myStr = "The quick brown fox jumps over the lazy dog";
char[] whitespace = new char[] { ' ', '\t' };
string[] ssizes = myStr.Split(whitespace);
Sangat menjengkelkan untuk mendefinisikan array char [] di mana-mana dalam kode saya, saya ingin melakukan ini. Apakah ada cara yang lebih efisien yang tidak memerlukan pembuatan array karakter (yang rawan kesalahan jika disalin di tempat yang berbeda)?
Jawaban:
Jika Anda baru saja menelepon:
atau:
maka white-space diasumsikan sebagai karakter pemisah. Dari
string.Split(char[])
halaman dokumentasi metode .Selalu, selalu, selalu baca dokumentasi!
sumber
(char[])null
sedikit lebih baik karena menghindari membuat objek baru. (Anda tidak dapat menggunakannull
denganoptions
kelebihan apa pun ).null
, apakah Anda masih perlu menentukanStringSplitOption.RemoveEmptyEntries
atau mereka diabaikan secara default?Ya, perlu ada satu jawaban lagi di sini!
Semua solusi sejauh ini menangani domain input kanonik yang agak terbatas , dengan kecerdasan: akarakter spasi putih tunggal antara elemen (meskipun ujung topi untuk @cherno untuk setidaknya menyebutkan masalah). Tapi saya sampaikan bahwa dalam semua kecuali skenario yang paling tidak jelas, pemisahan semua ini akan menghasilkan hasil yang identik:
String.Split
(dalam salah satu rasa yang ditunjukkan di seluruh jawaban lain di sini) tidak berfungsi dengan baik kecuali jika Anda melampirkanRemoveEmptyEntries
pilihan dengan salah satu dari ini:Seperti yang diungkapkan oleh ilustrasi, menghilangkan opsi menghasilkan empat hasil yang berbeda (berlabel A, B, C, dan D) vs. hasil tunggal dari keempat input ketika Anda menggunakan
RemoveEmptyEntries
:Tentu saja, jika Anda tidak suka menggunakan opsi, cukup gunakan alternatif regex :-)
sumber
CapitalizeEveryWord("This is line one.\n \nThis is line three.")
.Where(s => s != string.Empty)
ke Regex. Karena Anda menentukan\s+
(jumlah spasi), tidak ada item kosong di antaranya.Menurut dokumentasi :
Jadi panggil saja
myStr.Split();
Tidak perlu lewat apa pun karena pemisah adalahparams
array.sumber
Kenapa tidak Anda gunakan ?:
sumber
Perhatikan bahwa spasi putih yang berdekatan TIDAK akan diperlakukan sebagai pembatas tunggal, bahkan ketika menggunakan
String.Split(null)
. Jika salah satu token Anda dipisahkan dengan beberapa spasi atau tab, Anda akan mendapatkan string kosong yang dikembalikan dalam array Anda.Dari dokumentasi:
sumber
Jadi jangan salin dan tempel! Ekstrak fungsi untuk melakukan pemisahan dan menggunakannya kembali.
Penggunaan kembali kode adalah teman Anda.
sumber
Mengapa Anda tidak melakukan ini saja:
Sepertinya ada metode
String.ToCharArray()
di .NET 4.0!EDIT: Seperti yang ditunjukkan VMAtm, metode ini sudah ada di .NET 2.0!
sumber
kamu bisa memakai
untuk membagi string.
sumber
Tidak bisakah kau melakukannya inline?
Jika tidak, jika Anda sering melakukan hal ini, Anda selalu dapat membuat konstanta atau sesuatu yang berisi array arang.
Seperti yang telah dicatat orang lain, Anda dapat menggunakan dokumentasi
null
atau menggunakan array kosong sesuai dengan dokumentasi . Ketika Anda melakukannya, ia akan menggunakan karakter spasi putih secara otomatis.sumber
Jika mengulangi kode yang sama adalah masalahnya, tulis metode ekstensi pada kelas String yang merangkum logika pemisahan.
sumber
Anda bisa melakukannya:
MSDN memiliki lebih banyak contoh dan referensi:
http://msdn.microsoft.com/en-us/library/b873y76a.aspx
sumber