如何:从字符串中读取字符How to: Read characters from a string
下面的代码示例展示了如何从字符串中异步或同步读取字符。The following code examples show how to read characters synchronously or asynchronously from a string.
示例:同步读取字符Example: Read characters synchronously
此示例从字符串中同步读取 13 个字符,将它们存储到数组中,并显示这些字符。This example reads 13 characters synchronously from a string, stores them in an array, and displays them. 然后,示例将读取字符串中的剩余字符,将它们存储到数组中(从第六个元素开始),并显示数组的内容。The example then reads the rest of the characters in the string, stores them in the array starting at the sixth element, and displays the contents of the array.
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
示例:异步读取字符Example: Read characters asynchronously
下一个示例是 WPF 应用背后的代码。The next example is the code behind a WPF app. 在窗口加载时,示例从 TextBox 控件异步读取所有字符,并将其存储在数组中。On window load, the example asynchronously reads all characters from a TextBox control and stores them in an array. 随后,它以异步方式将每个字母或空格字符写入单独的 TextBlock 控件行。It then asynchronously writes each letter or white-space character to a separate line of a TextBlock control.
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
请参阅See also
- StringReader
- StringReader.Read
- 异步文件 I/OAsynchronous file I/O
- 如何:创建目录列表How to: Create a directory listing
- 如何:对新建的数据文件进行读取和写入How to: Read and write to a newly created data file
- 如何:打开并追加到日志文件How to: Open and append to a log file
- 如何:从文件中读取文本How to: Read text from a file
- 如何:将文本写入文件How to: Write text to a file
- 如何:向字符串写入字符How to: Write characters to a string
- 文件和流 I/OFile and stream I/O
反馈
正在加载反馈...