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

时间:2015-11-24 21:36:59

标签: c# file text compare

当我想阅读并比较基于列的文本文件中的每个单词时,我遇到了问题。

以下是我的文件的样子:

[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)

2 个答案:

答案 0 :(得分:1)

由于您一次阅读所有行,这对您也有用。

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

答案 1 :(得分: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
                    }
                }
            }
        }