last modified July 5, 2023
C# StringReader tutorial shows how to read strings in C# with StringReader.
Input & output in C# is based on streams. A Stream is an
abstract base class of all streams. A stream is an abstraction of a sequence of
bytes, such as a file, an input/output device, an inter-process communication
pipe, or a TCP/IP socket.
StringReader reads text data from strings. It can read data
synchronously or asynchronously. The reading operation is stream-based.
The ReadToEnd method reads all characters from the current position
to the end of the string and returns them as a single string.
using System.Text;
var sb = new StringBuilder();
sb.AppendLine("There is a hawk in the sky.");
sb.AppendLine("The sun is shining.");
sb.AppendLine("The flowers are blossoming.");
using var reader = new StringReader(sb.ToString());
string text = reader.ReadToEnd();
Console.WriteLine(text);
The example builds a string with StringBuilder and then reads
the text with StringReader's ReadToEnd.
$ dotnet run There is a hawk in the sky. The sun is shining. The flowers are blossoming.
The ReadLine method reads a line of characters from the current
string and returns the data as a string.
var text = @"The Battle of Thermopylae was fought between an alliance
of Greek city-states, led by King Leonidas of Sparta, and the Persian Empire of
Xerxes I over the course of three days, during the second Persian invasion of Greece.";
using var sr = new StringReader(text);
int count = 0;
string line;
while ((line = sr.ReadLine()) != null)
{
count++;
Console.WriteLine("Line {0}: {1}", count, line);
}
In the example, we count the lines of a multiline string.
while ((line = sr.ReadLine()) != null)
{
The ReadLine method returns the next line from the current
string, or null if the end of the string is reached.
$ dotnet run Line 1: The Battle of Thermopylae was fought between an alliance Line 2: of Greek city-states, led by King Leonidas of Sparta, and the Persian Empire of Line 3: Xerxes I over the course of three days, during the second Persian invasion of Greece.
The Read method reads the next character from the input string
and advances the character position by one character.
var text = "There is an old hawk in the sky.";
using var reader = new StringReader(text);
int count = 0;
char mychar = 'h';
int n;
while ((n = reader.Read()) != -1)
{
char c = (char) n;
if (c.Equals(mychar))
{
count++;
}
}
Console.WriteLine($"There are {count} '{mychar}' characters in the string");
In the example, we count the occurrence of the 'h' character in the text.
while ((n = reader.Read()) != -1)
{
The Read method returns the next character from the underlying
string, or -1 if no more characters are available.
$ dotnet run There are 3 'h' characters in the string
StringReader class - language reference
In this article we have read strings in C# with StringReader.
My name is Jan Bodnar, and I am a passionate programmer with extensive programming experience. I have been writing programming articles since 2007. To date, I have authored over 1,400 articles and 8 e-books. I possess more than ten years of experience in teaching programming.
List all C# tutorials.