C#读取文本文件中列中的每个单词
本文关键字:单词 取文本 文件 读取 | 更新日期: 2023-09-27 18:24:06
当我想读取和比较基于列的文本文件中的每个单词时,遇到了一个问题。
以下是我的文件的样子:
[ID] [Uname] [PW] [Email]
0 asd asd s
1 asdd asd asd@asd
2 asd asd asd@
我想阅读第二列中的每个单词,并将其与文本框中的文本进行比较。如果其中任何一个与文本框的文本相等,则会显示"用户名已被占用。"
这是我尝试过的代码:
string[] lines = File.ReadAllLines(path);
foreach (var line in lines) {
var firstValue = line.Split(new string[] { "'t" },StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine(firstValue);
if (firstValue[1].Equals(txt_uname.Text) && txt_uname.Text != "") {}
}
问题是"if"只检查我的[Uname]列的最后一个元素(asd)
由于您同时读取所有行,因此这也适用于您。
string[] lines = File.ReadAllLines(path);
if (!String.IsNullOrEmpty(txt_uname.Text)
&& lines.Where(u => u.Split(new string[] { "'t" }, StringSplitOptions.RemoveEmptyEntries)[1].Equals(txt_uname.Text)).Count() > 0)
{ }
听起来这是您实际使用的代码:
string[] lines = File.ReadAllLines("FilePath");
foreach (var line in lines)
{
var firstValue = line.Split(new[] { "'t" }, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine(firstValue[1]); // Needs to have [1] or it will just print System.String[]
}
即便如此,这也应该奏效。因此,我们不能看到更大的图片,或者您的文件缺少选项卡,也不能使用空格。
下面是一个逐行读取文件的例子(如果你正在消耗的文件可能在数百兆字节,则需要更熟练的内存),然后将行拆分为值进行比较:
using (var streamReader = new StreamReader("FilePath"))
{
if (!streamReader.EndOfStream)
{
string line = streamReader.ReadLine();
if (!String.IsNullOrEmpty(line))
{
string[] splitValues = line.Split(new[] { "'t" }, StringSplitOptions.RemoveEmptyEntries);
if (splitValues[1] == txt_uname.Text)
{
// Stuff
}
}
}
}