2011-08-16 20 views
7

olarak işleme koyuyorum Bir "sabit genişlik" veri dosyası kümesini ayrıştırmaya çalışıyorum, genişliği veri dosyası başına farklı olduğundan tırnak içinde kullandım. Ancak, alanların X sayısı ile ayrılır, bu yüzden ben sadece satırda okumak için düşündüm ve sonra line.Split ('')String.Split() - ardışık sınırlayıcıları tek bir

Ancak, bu ardışık boşluklar için çalışmaz! !

cevap

17

Birkaç seçeneğiniz var.

önce StringSplitOptions parametre kabul string.Split() aşırı kullanmak ve StringSplitOptions.RemoveEmptyEntries geçmek için: arka arkaya birden çok boşluğu varsa,

string[] columns = lineOfText.Split(new [] {' '}, StringSplitOptions.RemoveEmptyEntries); 

bu şekilde, oluşturulan boş girişleri atılır .

İkinci seçenek, ayrıştırmanızı yapmak için normal bir ifade kullanmaktır. Bu muhtemelen sizin durumunuzda gerekli değildir, ancak format daha karmaşık hale gelirse ya da zaman içinde biraz değişmesini beklerseniz kullanışlı olabilir.

+0

+1, ancak Regex, satırları ayrılmış alanlara ayırmak için biraz fazla gözüküyor. Seçenek 1 sadece iyi olmalı. – StriplingWarrior

+0

@Stripling Fuarı yeterli; Adlı çekim grupları ve esnek kontrabasların değişen formatlara daha kolay uyum sağladığından tercih edilmesinin kendimi tercih ettiğini düşünüyorum. Ama evet, bu basit durumda, seçenek 1, muhtemelen daha iyi. – dlev

İlgili konular