जवाबों:
मेरा सुझाव है कि मैं StringReader
और मेरी LineReader
कक्षा के संयोजन का उपयोग करें , जो कि MiscUtil का हिस्सा है, लेकिन इस StackOverflow के उत्तर में भी उपलब्ध है - आप आसानी से उस वर्ग को अपनी उपयोगिता परियोजना में कॉपी कर सकते हैं। आप इसे इस तरह उपयोग करेंगे:
string text = @"First line
second line
third line";
foreach (string line in new LineReader(() => new StringReader(text)))
{
Console.WriteLine(line);
}
स्ट्रिंग डेटा के एक निकाय (चाहे वह फ़ाइल या जो भी हो) में सभी रेखाओं पर लूपिंग इतनी आम है कि इसे कॉलिंग कोड को नल आदि के लिए परीक्षण करने की आवश्यकता नहीं होनी चाहिए :) ने कहा कि, यदि आप एक करना चाहते हैं मैनुअल लूप, यह वह रूप है जिसे मैं आमतौर पर फ्रेड्रिक के ऊपर पसंद करता हूं:
using (StringReader reader = new StringReader(input))
{
string line;
while ((line = reader.ReadLine()) != null)
{
// Do something with the line
}
}
इस तरह से आपको केवल एक बार अशक्तता के लिए परीक्षण करना होगा, और आपको लूप के बारे में सोचना नहीं है / (जबकि किसी कारण से हमेशा मुझे लूप करते हुए पढ़ने की तुलना में अधिक प्रयास करना पड़ता है)।
आप StringReader
एक समय में एक पंक्ति पढ़ने के लिए उपयोग कर सकते हैं :
using (StringReader reader = new StringReader(input))
{
string line = string.Empty;
do
{
line = reader.ReadLine();
if (line != null)
{
// do something with the line
}
} while (line != null);
}
स्ट्रिंग के लिए MSDN से
string textReaderText = "TextReader is the abstract base " +
"class of StreamReader and StringReader, which read " +
"characters from streams and strings, respectively.\n\n" +
"Create an instance of TextReader to open a text file " +
"for reading a specified range of characters, or to " +
"create a reader based on an existing stream.\n\n" +
"You can also use an instance of TextReader to read " +
"text from a custom backing store using the same " +
"APIs you would use for a string or a stream.\n\n";
Console.WriteLine("Original text:\n\n{0}", textReaderText);
// From textReaderText, create a continuous paragraph
// with two spaces between each sentence.
string aLine, aParagraph = null;
StringReader strReader = new StringReader(textReaderText);
while(true)
{
aLine = strReader.ReadLine();
if(aLine != null)
{
aParagraph = aParagraph + aLine + " ";
}
else
{
aParagraph = aParagraph + "\n";
break;
}
}
Console.WriteLine("Modified text:\n\n{0}", aParagraph);
यहां एक त्वरित कोड स्निपेट दिया गया है जो एक स्ट्रिंग में पहली गैर-खाली लाइन ढूंढेगा:
string line1;
while (
((line1 = sr.ReadLine()) != null) &&
((line1 = line1.Trim()).Length == 0)
)
{ /* Do nothing - just trying to find first non-empty line*/ }
if(line1 == null){ /* Error - no non-empty lines in string */ }
String.Split विधि का उपयोग करने का प्रयास करें:
string text = @"First line
second line
third line";
foreach (string line in text.Split('\n'))
{
// do something
}