2011-08-04 14 views
5

से अतिरिक्त कैरिज रिटर्न हटाएं मैं स्ट्रीम के रूप में फ़ाइल पढ़ रहा हूं: Stream fin = File.OpenRead(FilePath); क्या कोई तरीका है कि मैं उस फ़ाइल स्ट्रीम से सभी कैरिज रिटर्न को कैसे ढूंढ और निकाल सकता हूं?सी # स्ट्रीम

संपादित करें: लक्ष्य एकल कैरिज-रिटर्न \r को निकालना है और कैरिज रिटर्न को न्यूलाइन "\r\n" बरकरार रखने के लिए छोड़ दें।

उदाहरण फ़ाइल:

The key backed up in this file is: 
\r\n 
pub 2048R/65079BB4 2011-08-01 
\r\n 
     Key fingerprint = 2342334234 
\r\n 
uid     test 
\r\n 
sub 2048R/0B917D1C 2011-08-01 

EDIT2::

The key backed up in this file is:\r 
\r\n 
pub 2048R/65079BB4 2011-08-01\r 
\r\n 
     Key fingerprint = 2342334234\r 
\r\n 
uid     test\r 
\r\n 
sub 2048R/0B917D1C 2011-08-01\r 

और परिणाम की तरह दिखना चाहिए अंतिम समाधान क्या इस तरह दिखता है काम कर रहा है:

static private Stream RemoveExtraCarriageReturns(Stream streamIn) 
    { 
     StreamReader reader = new StreamReader(streamIn); 
     string key = reader.ReadToEnd(); 
     string final = key.Replace("\r\r", "\r"); 
     byte[] array = Encoding.ASCII.GetBytes(final); 
     MemoryStream stream = new MemoryStream(array); 
     return stream; 
    } 

मैं में ले Stream एक स्ट्रिंग में पढ़ने के लिए StreamReader का उपयोग करें, फिर ई को हटा दें एक्स्ट्रा कैरिज-रिटर्न और इसे Stream पर वापस लिखें। क्या मेरा कोड ठीक दिखता है या क्या मुझे कुछ अलग करना चाहिए?

+0

ठीक लग रहा है, हालांकि आप शायद एपीआई स्वच्छता के लिए विधि के भीतर शून्य करने के लिए वापसी धारा की स्थिति निर्धारित करना चाहिए। छोटी फाइलों के लिए अच्छा समाधान। –

उत्तर

2

अपने नमूना पाठ को देखने के बाद, निम्नलिखित अपने एकल 'आर' आवृत्तियां निकाल देगा:

string text = File.ReadAllText(FilePath); 

text = text.Replace("\r\r", "\r"); 

File.WriteAllText(FilePath + ".modified", text); 
+0

धन्यवाद, यह काम करता है! – hs2d

+1

यह कोई समस्या नहीं हो सकती है, लेकिन अगर स्ट्रिंग '\ r \ r \ r "' दिया गया है, तो परिणाम अभी भी' \ r \ r "' होगा। जब तक आप प्रतिस्थापन नहीं करते हैं तब तक आपको वही स्ट्रिंग वापस प्राप्त होने तक प्रतिस्थापन करना होगा। – aL3891

+0

@ aL3891 सहमत हुए, लेकिन नमूना पाठ से यह नहीं होगा। –

0

Replace Line Breaks in a String C#

ऊपर उत्तर नहीं है। आप फ़ाइल में एक स्ट्रिंग में पढ़ सकते हैं और फिर लाइन ब्रेक को हटा सकते हैं।

+0

मुझे लगता है कि वह सीधे स्ट्रीम से उन्हें हटाना चाहता है, लेकिन हाँ, स्ट्रीम में पढ़ने के बाद उन्हें निकालना बेहतर होगा। – Jethro

+0

हां, एक स्ट्रिंग में फ़ाइल पढ़ने का मेरा आखिरी विकल्प है। सिर्फ यह जानना चाहता था कि धारा में सही तरीके से ऐसा करने का कोई तरीका है या नहीं। – hs2d

2

कैसे के बारे में:

string final = string.Join("", File.ReadLines(path)); 

? यह लाइन-दर-रेखा पढ़ता है, फिर किसी भी विभाजक के बिना फिर से जोड़ता है।

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