使用c#流式读取器将单个单词读入数组

本文关键字:单个单 数组 读取 使用 | 更新日期: 2023-09-27 18:01:18

我试图得到一个单词列表(下面)放入一个数组。我希望每个单词都有自己的索引。

这是我到目前为止的代码。

string badWordsFilePath = openFileDialog2.FileName.ToString();
StreamReader sr = new StreamReader(badWordsFilePath);
string line = sr.ReadToEnd();
string[] badWordsLine = line.Split(' ');
int BadWordArrayCount = 0;
foreach (string word in badWordsLine)
{
    badWords[BadWordArrayCount] = word;
    BadWordArrayCount = BadWordArrayCount + 1;
}
int test = badWords.Length;
MessageBox.Show("Words have been imported!");
BadWordsImported = true;

这是我要导入的单词列表。

label
invoice
post
document
postal
calculations
copy
fedex
statement
financial
dhl
usps
8
notification
n
irs
ups
no
delivery
ticket

如果有人能给我一个例子如何使这个工作,那将是一个巨大的帮助。

使用c#流式读取器将单个单词读入数组

简化代码:

string badWordsFilePath = openFileDialog2.FileName.ToString();
string[] badWords = File.ReadAllLines(badWordsFilePath);
int test = badWords.Length;
MessageBox.Show("Words have been imported!");
BadWordsImported = true;

如果每个单词都在新行开始,则不需要创建for循环。Split方法将为您转换为数组。

string badWordsFilePath = openFileDialog2.FileName.ToString();
StreamReader sr = new StreamReader(badWordsFilePath);
string line = sr.ReadToEnd();
string[] badWords = line.Split(''n');

你在空格上分割,但是每个单词之间有一个换行符。用换行符分割:

string[] badWordsLine = line.Split(new string[]{ Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);

然后你必须创建一个数组来存放单词:

badWords = new string[badWordsLine.Length];

然而,循环遍历字符串数组只是为了将字符串复制到字符串数组中似乎毫无意义。只是将字符串数组传递给变量。另外,您忘记关闭流读取器,这最好使用using块来处理:

string badWordsFilePath = openFileDialog2.FileName.ToString();
string line;
using (StreamReader sr = new StreamReader(badWordsFilePath)) {}
  line = sr.ReadToEnd();
}
badWords = line.Split(new string[]{ Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
int test = badWords.Length;
MessageBox.Show("Words have been imported!");
BadWordsImported = true;

试试这个修改?它允许在不同的空白上分割。

     string badWordsFilePath = openFileDialog2.FileName.ToString();
            StreamReader sr = new StreamReader(badWordsFilePath);
            string line = sr.ReadToEnd();
            string[] badWordsLine = line.Split(new string[] {" ", "'t", "'r'n"}, StringSplitOptions.RemoveEmptyEntries);
            int BadWordArrayCount = 0;
            foreach (string word in badWordsLine)
            {
                badWords[BadWordArrayCount] = word;
                BadWordArrayCount = BadWordArrayCount + 1;
            }
            int test = badWords.Length;
            MessageBox.Show("Words have been imported!");
            BadWordsImported = true;

你必须使用StreamReader吗?如果你不需要,那么这段代码会更清晰(在我看来)。

string text = File.ReadAllText(badWordsFilePath);
string[] words = Regex.Split(text, @"'s+");

如果你100%确定每个单词都在自己的行上,没有空行,这可能是多余的;和文件。@Ulugbek Umirov的ReadAllLines建议更简单。