2011-08-16 13 views
7

के रूप में लगातार डिलीमीटर का इलाज करना मैं "निश्चित चौड़ाई" डेटा फ़ाइलों के एक सेट को पार्स करने का प्रयास कर रहा हूं, मैं उद्धरणों में इसका उपयोग करता हूं क्योंकि चौड़ाई प्रति डेटा फ़ाइल अलग है। हालांकि, फ़ील्ड को एक्स स्पेस से अलग किया जाता है, इसलिए मैंने लाइन में केवल पढ़ने के लिए सोचा, और फिर लाइन करें। स्प्लिट ('')स्ट्रिंग। स्प्लिट() - एक

हालांकि, यह लगातार रिक्त स्थान के लिए काम नहीं करता है! !

उत्तर

17

आपके पास कुछ विकल्प हैं।

पहले string.Split() अधिभार कि एक StringSplitOptions पैरामीटर स्वीकार करता है का उपयोग करें और StringSplitOptions.RemoveEmptyEntries में पारित करने के लिए है:

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

इस तरह, अगर आप लगातार एक से अधिक रिक्त स्थान है, खाली प्रविष्टियों को उत्पन्न कर रहे हैं छोड़ दिया जाएगा ।

दूसरा विकल्प आपके पार्सिंग करने के लिए नियमित अभिव्यक्ति का उपयोग करना है। यह शायद आपके मामले में जरूरी नहीं है, लेकिन यदि प्रारूप अधिक जटिल हो जाता है, या आप समय के साथ थोड़ा बदलना चाहते हैं तो काम में आ सकता है।

+0

+1, लेकिन रेगेक्स अंतरिक्ष-अलग मूल्यों में विभाजित लाइनों के लिए थोड़ा ओवरबोर्ड लगता है। विकल्प 1 बस ठीक होना चाहिए। – StriplingWarrior

+0

@Stripling मेला पर्याप्त; मुझे लगता है कि यह बेहतर है क्योंकि नामित कैप्चर समूह और लचीली बाधाएं बदलते प्रारूपों को आसान बनाते हैं। लेकिन हाँ, इस साधारण मामले में विकल्प 1 ठीक से अधिक है। – dlev

संबंधित मुद्दे