2011-03-09 19 views
6

बिना ग्रूवी विभाजन मैं निम्नलिखित की तरह एक सीवीएस फ़ाइल को पार्स कर रहा हूँ:अंतिम ट्रिम

"07555555555",25.70,18/11/2010,01/03/2011,N,133,0,36,,896,537,547,,Mr,John,Doe,, 
"07555555555",10.15,26/01/2011,01/03/2011,N,16,0,100,,896,537,547,,Mrs,Jane,Doe,,[email protected] 

बात यह है कि जब इस तरह की एक स्क्रिप्ट का उपयोग:

file.eachLine{ line -> 

    items = line.split(",") 
    println items.length 
} 

परिणाम निम्नलिखित की तरह है :

16 
18 

कौन सा मुझे बात विभाजित कि समारोह एक को हटा बनाता है अंतिम मूल्य मुझे खाली होने पर भी सभी वस्तुओं की आवश्यकता है। कोई उपाय?

+2

सीएसवी के लिए पार्सिंग तर्क को पुनर्निर्माण करने के बजाय लाइब्रेरी का उपयोग करने के लिए आपके समय के लायक हो सकता है। मैं Opencsv या groovycsv का उपयोग करने का सुझाव दूंगा https://github.com/xlson/groovycsv/, opencsv के लिए एक groovy wrapper (अस्वीकरण: मैं groovycsv के लेखक हूँ)। आप यहाँ groovy में csv पार्सिंग के बारे में अधिक पढ़ सकते हैं: http://www.kellyrob99.com/blog/2010/07/01/groovy-and-csv-how-to-get-your-data-out/ – xlson

उत्तर

4

मुझे लगता है कि आप क्या करना चाहते:

सीमा पैरामीटर को नियंत्रित करता है की संख्या:

items = line.split(',', -1) 

सुनिश्चित करें कि आप (the javadoc के अनुसार) सभी टोकन

प्राप्त करने के लिए पैटर्न पैटर्न लागू होता है और इसलिए परिणामस्वरूप सरणी की लंबाई को प्रभावित करता है। सीमा n शून्य तो पैटर्न सबसे n पर लागू किया जाएगा से अधिक है तो - 1 बार, सरणी की लंबाई से n कोई अधिक हो जाएगा, और सरणी के अंतिम प्रविष्टि पिछले मिलान किया परे सभी इनपुट में शामिल होंगे सीमांकक। यदि n गैर-पॉजिटिव है तो पैटर्न जितनी बार संभव हो सके लागू होगा और सरणी में कोई लंबाई हो सकती है। यदि n शून्य है तो पैटर्न जितनी बार संभव हो सके लागू किया जाएगा, सरणी कोई लंबाई हो सकती है, और पीछे खाली तारों को छोड़ दिया जाएगा।

+0

धन्यवाद बहुत ज्यादा! –

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