2013-12-18 24 views
15

Virgülle ayrılmış bir dizeyi bir dizgi dizisine dönüştürmek ve ayrıca boşlukları ve boş girdileri kaldırmak istedim.Boşlukları ve boş girdileri kaldırırken virgülle ayrılmış bir dize bölme

string valueString = "sam, mike, , ,john , Tom and jerry , "; 

beklenen sonuç aşağıdaki değerler (tabii ki, kesilmiş) olacaktır: Ki değerleri düzeltir kod aşağıdaki satırı çalıştılar

sam 
mike 
john 
Tom and Jerry 

, ancak örneğin, giriş verilen Bu "boş" girişleri kaldırmak için başarısız:

valueString.Split(',').Select(sValue => sValue.Trim()).ToArray(); 

ne girdi kırparak ve temizlik ve sürecin neden olabilir boş girişleri hakkında gitmek için en iyi yolu olurdu?

+0

onunla ne sorun yaşıyorsunuz? Bir hata aldın mı? – MikeSmithDev

cevap

32

StringSplitOptions.RemoveEmptyEntries ile Trim'in kullanılması işe yaramaz çünkü " " boş bir giriş olarak değerlendirilmez. Normal bir bölme yapmanız, ardından her bir öğeyi kırpmanız ve boş dizeleri filtrelemeniz gerekir.

valueString.Split(',') 
    .Select(x => x.Trim()) 
    .Where(x => !string.IsNullOrWhiteSpace(x)) 
    .ToArray(); 
+0

'new {','}' bu yanlış. – MikeSmithDev

+0

, "yeni [] {','} olmalıdır –

0

Anthony cevap üzerine inşa edilen bu yanı virgülle ayrılmış dizeye geri dönüştürür:

valueString = string.Join(",", valueString.Split(',') 
    .Select(x => x.Trim()) 
    .Where(x => !string.IsNullOrWhiteSpace(x)) 
    .ToArray()) 
İlgili konular