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)

C#读取文本文件中列中的每个单词

由于您同时读取所有行,因此这也适用于您。

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
                    }
                }
            }
        }