मेरे मामले में, वैध सीएसवी या तो अल्पविराम या सेमी-कॉलन द्वारा सीमित हैं। मैं अन्य पुस्तकालयों के लिए खुला हूं, लेकिन इसे जावा होना चाहिए। अपाचे सीएसवीपार्सर एपीआई के माध्यम से पढ़ना, केवल एक चीज जो मैं सोच सकता हूं वह ऐसा करने के लिए है जो अक्षम और बदसूरत लगता है।एक CSV फ़ाइल को कैसे पार्स करें जिसमें दो डिलीमीटर हो सकते हैं?
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(file));
CSVFormat csvFormat = CSVFormat.EXCEL.withHeader().withDelimiter(';');
CSVParser parser = csvFormat.parse(reader);
// now read the records
}
catch (IOException eee)
{
try
{
// try the other valid delimeter
csvFormat = CSVFormat.EXCEL.withHeader().withDelimiter(',');
parser = csvFormat.parse(reader);
// now read the records
}
catch (IOException eee)
{
// then its really not a valid CSV file
}
}
क्या पहले डेलीमीटर की जांच करने का कोई तरीका है, या शायद दो डिलीमीटर की अनुमति है? अपवाद को पकड़ने से किसी के पास कोई बेहतर विचार है?
मुझे लगता है कि अपने कोड सबसे अच्छा कर रहे हैं है। सामान्य सीएसवी फ़ाइल में डेलीमीटर का पता लगाने के लिए कोई विधि नहीं है। डेलीमीटर का पता लगाने का एकमात्र तरीका कई डिलीमीटरों के साथ पुनः प्रयास कर रहा है। – gilchris
बस एक विचार, यदि आपने अच्छी तरह से सीएसवी बनाया है तो क्या आप अपने विकल्पों में से एक के लिए पैटर्न मिलान कर सकते हैं? यदि प्रत्येक फ़ील्ड उद्धरणों में लपेटा जाता है तो कॉमा से अलग हो जाता है तो आपको पैटर्न के कई उदाहरण मिल सकते हैं "," –