C # में, मैं एक स्ट्रिंग से एक TextReader ऑब्जेक्ट कैसे बना सकता हूं (डिस्क पर लिखे बिना)


126

मैं एक फास्ट CSV रीडर का उपयोग करके किसी चिपके हुए पाठ को एक वेबपेज में भेज सकता हूँ। फास्ट CSV रीडर को TextReader ऑब्जेक्ट की आवश्यकता होती है, और मेरे पास सभी एक स्ट्रिंग है। मक्खी पर TextReader ऑब्जेक्ट में स्ट्रिंग को बदलने का सबसे अच्छा तरीका क्या है?

धन्यवाद!

अद्यतन- नमूना कोड- मूल नमूने में, एक नया स्ट्रीमराइडर "data.csv" नामक एक फ़ाइल की तलाश में है। मैं TextBox_StartData.Text के माध्यम से इसकी आपूर्ति करने की उम्मीद कर रहा हूं।

नीचे इस कोड का उपयोग करना संकलन नहीं करता है।

        TextReader sr = new StringReader(TextBox_StartData.Text);
        using (CsvReader csv = new CsvReader(new StreamReader(sr), true))
        {
            DetailsView1.DataSource = csv;
            DetailsView1.DataBind();
        }

new StreamReader(sr)मुझसे कहता है यह कुछ ऐसी अमान्य तर्क हैं। कोई विचार?

वैकल्पिक दृष्टिकोण के रूप में, मैंने यह कोशिश की है:

        TextReader sr = new StreamReader(TextBox_StartData.Text);
        using (CsvReader csv = new CsvReader(sr, true))
        {
            DetailsView1.DataSource = csv;
            DetailsView1.DataBind();
        }

लेकिन मुझे Illegal characters in path Error.यहां पर TextBox_StartData.Text से स्ट्रिंग का एक नमूना मिला है:

Fname\tLname\tEmail\nClaude\tCuriel\tClaude.Curiel@email.com\nAntoinette\tCalixte\tAntoinette.Calixte@email.com\nCathey\tPeden\tCathey.Peden@email.com\n

किसी भी विचार अगर यह सही दृष्टिकोण? आपकी सहायता के लिए एक बार फिर से धन्यवाद!

जवाबों:



9

StringReaderवर्ग का उपयोग करें , जो विरासत में मिला है TextReader


3
TextReaderएक इंटरफ़ेस नहीं है, यह एक अमूर्त वर्ग है।
14


4

StringReader है एक TextReader( StreamReaderबहुत है, लेकिन के लिए धाराओं से पढ़ रही है)। इसलिए अपना पहला उदाहरण लेना और सिर्फ इसका निर्माण करने CsvReaderकी कोशिश करने के बजाय इसका उपयोग StreamReaderकरना पहले देता है:

TextReader sr = new StringReader(TextBox_StartData.Text);
using(CsvReader csv = new CsvReader(sr, true))
{
  DetailsView1.DataSource = csv;
  DetailsView1.DataBind();
}

धन्यवाद जॉन ... मुझे लगता है कि फास्ट सीएसवी फ्रेमवर्क के साथ एक बग है। मुझे एक परिणाम मिल रहा है जो इस तरह दिखता है:! screencast.com/t/5wZRrjDMO ...
हेयरगामी_मास्टर

मेरा CSV fname, lname, email john, doe, jd @ email.com है
हेयरगामी_मास्टर

1
वह (जब मैं यह देखने के लिए कि आप स्क्रैंकेस्ट से लिंक कर रहे हैं देखने के लिए स्रोत -t/5wZRrjDMO वैसे भी) ऐसा लगता है कि आप स्ट्रिंग्स के सरणियों की एक श्रृंखला (प्रत्येक पंक्ति के लिए एक) का निर्माण कर रहे हैं, और उन्हें रेंडर करने की कोशिश कर रहे हैं, जिसके परिणामस्वरूप पाठ "System.String []" दोहराया। यह मुझे एक सीएसवी पार्सर से एक उचित परिणाम की तरह लगता है, अच्छी तरह से संभाला नहीं। इसे ग्रिड-व्यू में आउटपुट करने का प्रयास करें और देखें कि क्या होता है।
जॉन हन्ना

धन्यवाद जॉन- वास्तव में, मैं एक GridView का उपयोग कर रहा हूं, मैंने उनमें से एक जोड़े की कोशिश की है, लेकिन मुझे लगता है कि डेटा को ठीक से वापस किया जा रहा है, यह सिर्फ सही डेटा डिस्प्ले कंट्रोल चुनने की बात है .. ??
बालगामी_मास्टर

1
मैं नियंत्रणों का भारी उपयोग नहीं करने की प्रवृत्ति रखता हूं, इसलिए वहां कुछ ऐसा हो सकता है जो मुझे याद आ रहा है। आउटपुट स्ट्रिंग्स के सरणियों की श्रृंखला प्रतीत होता है (प्रत्येक पंक्ति के लिए एक सरणी, प्रत्येक सेल के लिए एक स्ट्रिंग), जो समझ में आता है। यकीन नहीं है कि यह परे काम क्यों नहीं कर रहा है मुझे डर है :(
जॉन हैना


1

यदि आप के लिए प्रलेखनTextReader को देखते हैं, तो आपको दो विरासत वाली कक्षाएं दिखाई देंगी। और उनमें से एक है StringReader, जो वास्तव में आप क्या चाहते हैं करने के लिए लगता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.