Procedure: Tekens uit een tekenreeks lezen
In de volgende codevoorbeelden ziet u hoe u tekens synchroon of asynchroon uit een tekenreeks leest.
Voorbeeld: Synchroon lezen van tekens
In dit voorbeeld worden 13 tekens synchroon uit een tekenreeks gelezen, opgeslagen in een matrix en weergegeven. In het voorbeeld worden vervolgens de rest van de tekens in de tekenreeks gelezen, opgeslagen in de matrix vanaf het zesde element en wordt de inhoud van de matrix weergegeven.
using System;
using System.IO;
public class CharsFromStr
{
public static void Main()
{
string str = "Some number of characters";
char[] b = new char[str.Length];
using (StringReader sr = new StringReader(str))
{
// Read 13 characters from the string into the array.
sr.Read(b, 0, 13);
Console.WriteLine(b);
// Read the rest of the string starting at the current string position.
// Put in the array starting at the 6th array member.
sr.Read(b, 5, str.Length - 13);
Console.WriteLine(b);
}
}
}
// The example has the following output:
//
// Some number o
// Some f characters
Imports System.IO
Public Class CharsFromStr
Public Shared Sub Main()
Dim str As String = "Some number of characters"
Dim b(str.Length - 1) As Char
Using sr As StringReader = New StringReader(str)
' Read 13 characters from the string into the array.
sr.Read(b, 0, 13)
Console.WriteLine(b)
' Read the rest of the string starting at the current string position.
' Put in the array starting at the 6th array member.
sr.Read(b, 5, str.Length - 13)
Console.WriteLine(b)
End Using
End Sub
End Class
' The example has the following output:
'
' Some number o
' Some f characters
Voorbeeld: asynchroon tekens lezen
Het volgende voorbeeld is de code achter een WPF-app. Bij het laden van vensters worden in het voorbeeld asynchroon alle tekens uit een TextBox besturingselement gelezen en opgeslagen in een matrix. Vervolgens wordt elke letter of witruimte asynchroon naar een afzonderlijke regel van een TextBlock besturingselement geschreven.
using System;
using System.Text;
using System.Windows;
using System.IO;
namespace StringReaderWriter
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private async void Window_Loaded(object sender, RoutedEventArgs e)
{
char[] charsRead = new char[UserInput.Text.Length];
using (StringReader reader = new StringReader(UserInput.Text))
{
await reader.ReadAsync(charsRead, 0, UserInput.Text.Length);
}
StringBuilder reformattedText = new StringBuilder();
using (StringWriter writer = new StringWriter(reformattedText))
{
foreach (char c in charsRead)
{
if (char.IsLetter(c) || char.IsWhiteSpace(c))
{
await writer.WriteLineAsync(char.ToLower(c));
}
}
}
Result.Text = reformattedText.ToString();
}
}
}
Imports System.IO
Imports System.Text
''' <summary>
''' Interaction logic for MainWindow.xaml
''' </summary>
Partial Public Class MainWindow
Inherits Window
Public Sub New()
InitializeComponent()
End Sub
Private Async Sub Window_Loaded(sender As Object, e As RoutedEventArgs)
Dim charsRead As Char() = New Char(UserInput.Text.Length) {}
Using reader As StringReader = New StringReader(UserInput.Text)
Await reader.ReadAsync(charsRead, 0, UserInput.Text.Length)
End Using
Dim reformattedText As StringBuilder = New StringBuilder()
Using writer As StringWriter = New StringWriter(reformattedText)
For Each c As Char In charsRead
If Char.IsLetter(c) Or Char.IsWhiteSpace(c) Then
Await writer.WriteLineAsync(Char.ToLower(c))
End If
Next
End Using
Result.Text = reformattedText.ToString()
End Sub
End Class
Zie ook
- StringReader
- StringReader.Read
- Asynchrone bestands-I/O
- Procedure: Een directoryvermelding maken
- Procedure: lezen en schrijven naar een nieuw gemaakt gegevensbestand
- Procedure: Openen en toevoegen aan een logboekbestand
- Procedure: Tekst uit een bestand lezen
- Procedure: Tekst naar een bestand schrijven
- Procedure: Tekens naar een tekenreeks schrijven
- I/O voor bestanden en streamen