इस प्रश्न की n00bness क्षमा करें, लेकिन मेरे पास एक वेब एप्लिकेशन है जहां मैं सर्वर पर संभावित रूप से बड़ी फ़ाइल भेजना चाहता हूं और इसे प्रारूप को पार्स करना चाहता हूं। मैं Play20 ढांचे का उपयोग कर रहा हूं और मैं स्कैला के लिए नया हूं।नई लाइनों के साथ स्काला प्ले 20 में बॉडीपार्सर के साथ एक फ़ाइल को पार्स करना
उदाहरण के लिए, यदि मेरे पास एक सीएसवी है, तो मैं प्रत्येक पंक्ति को "," से विभाजित करना चाहता हूं और आखिरकार प्रत्येक क्षेत्र के साथ List[List[String]]
बना सकता हूं।
वर्तमान में, मैं सोच रहा हूं कि ऐसा करने का सबसे अच्छा तरीका बॉडीपार्सर के साथ है (लेकिन मैं गलत हो सकता हूं)। मेरे कोड लग रहा है कि:
Iteratee.fold[String, List[List[String]]]() {
(result, chunk) =>
result = chunk.splitByNewLine.splitByDelimiter // Psuedocode
}
मेरा पहला सवाल यह है कि, मैं जहां एक हिस्सा एक लाइन के बीच में विभाजित किया गया है नीचे एक की तरह एक स्थिति से कैसे निपटते हैं:
Chunk 1:
1,2,3,4\n
5,6
Chunk 2:
7,8\n
9,10,11,12\n
मेरे दूसरा सवाल यह है कि, इस बारे में जाने के लिए अपना खुद का बॉडीपार्स सही तरीका लिख रहा है? क्या इस फाइल को पार्स करने के बेहतर तरीके हैं? मेरी मुख्य चिंता यह है कि मैं फ़ाइलों को बहुत बड़ा होने की अनुमति देना चाहता हूं ताकि मैं किसी बिंदु पर एक बफर फ्लश कर सकूं और पूरी फ़ाइल को स्मृति में न रख सकूं।
:
तो अपने Play2 नियंत्रक की तरह कुछ होगा। –
बिलकुल नहीं, आप पिछले कोड को प्रतिस्थापित कर सकते हैं><> रचना के साथ, और >> ट्रांसफॉर्म करके, >>> चलाकर। ये ऑपरेटर स्कैला से नहीं हैं लेकिन संबंधित वस्तुओं के तरीके हैं। – Sadache
आह हाँ, मैंने फिर से एन्युमेरेट्स पर दस्तावेज़ों के माध्यम से पढ़ा और यह समझ में आता है। धन्यवाद! –