Delen via


Procedure: Tekens naar een tekenreeks schrijven

In de volgende codevoorbeelden worden tekens synchroon of asynchroon uit een tekenmatrix in een tekenreeks geschreven.

Voorbeeld: Tekens synchroon schrijven in een console-app

In het volgende voorbeeld wordt een tekenreeks StringWriter gebruikt om vijf tekens synchroon te schrijven naar een StringBuilder object.

using System;
using System.IO;
using System.Text;

public class CharsToStr
{
    public static void Main()
    {
        StringBuilder sb = new StringBuilder("Start with a string and add from ");
        char[] b = { 'c', 'h', 'a', 'r', '.', ' ', 'B', 'u', 't', ' ', 'n', 'o', 't', ' ', 'a', 'l', 'l' };

        using (StringWriter sw = new StringWriter(sb))
        {
            // Write five characters from the array into the StringBuilder.
            sw.Write(b, 0, 5);
            Console.WriteLine(sb);
        }
    }
}
// The example has the following output:
//
// Start with a string and add from char.


Imports System.IO
Imports System.Text

Public Class CharsToStr
    Public Shared Sub Main()
        Dim sb As New StringBuilder("Start with a string and add from ")
        Dim b() As Char = {"c", "h", "a", "r", ".", " ", "B", "u", "t", " ", "n", "o", "t", " ", "a", "l", "l"}

        Using sw As StringWriter = New StringWriter(sb)
            ' Write five characters from the array into the StringBuilder.
            sw.Write(b, 0, 5)
            Console.WriteLine(sb)
        End Using
    End Sub
End Class
' The example has the following output:
'
' Start with a string and add from char.

Voorbeeld: asynchroon tekens schrijven in een WPF-app

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