我必须为我正在学习的计算机类(class)编写一个控制台应用程序。该程序使用 StreamReader 从文件中读取文本,将字符串拆分为单个单词并将它们保存在 String 数组中,然后向后打印这些单词。
每当文件中有回车符时,文件就会停止读取文本。有人可以帮我解决这个问题吗?
下面是主程序:
using System;
using System.IO;
using System.Text.RegularExpressions;
namespace Assignment2
{
class Program
{
public String[] chop(String input)
{
input = Regex.Replace(input, @"\s+", " ");
input = input.Trim();
char[] stringSeparators = {' ', '\n', '\r'};
String[] words = input.Split(stringSeparators);
return words;
}
static void Main(string[] args)
{
Program p = new Program();
StreamReader sr = new StreamReader("input.txt");
String line = sr.ReadLine();
String[] splitWords = p.chop(line);
for (int i = 1; i <= splitWords.Length; i++)
{
Console.WriteLine(splitWords[splitWords.Length - i]);
}
Console.ReadLine();
}
}
}
这是文件“input.txt”:
This is the file you can use to
provide input to your program and later on open it inside your program to process the input.
最佳答案
您可以使用 StreamReader.ReadToEnd
而不是 StreamReader.ReadLine
。
// Cange this:
// StreamReader sr = new StreamReader("input.txt");
// String line = sr.ReadLine();
string line;
using (StreamReader sr = new StreamReader("input.txt"))
{
line = sr.ReadToEnd();
}
添加
using
块也将确保正确关闭输入文件。另一种选择就是使用:
string line = File.ReadAllText("input.txt"); // Read the text in one line
ReadLine
从文件中读取一行,并去除尾随的回车符和换行符。ReadToEnd
会将整个文件作为单个字符串读取,并保留这些字符,让您的 chop
方法按写入的方式工作。关于c# - StreamReader 不读回车,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18086304/