【问题标题】:How to filter values read from a text file如何过滤从文本文件中读取的值
【发布时间】:2016-11-07 09:55:56
【问题描述】:

我想从 C# 中的文本文件中获取几个值。示例:

1.sex=male
1.name=barack
1.lastname=obama
1.age = 55

2.sex=female
2.name= kelly
2.lastname=clinton
2.age = 24

3.sex = male
3.firstname= mike
3.lastname= james
3.age= 19

我只想从 textFile 中获取所有“姓名”、“姓氏”和年龄,而不是“性别”。我该如何过滤这个?我尝试过类似的方法,但它只显示 1 个值。

var list = new List<string>();

var text = File.ReadAllLines(@"C:\Users\Jal\Desktop\Test.text");
foreach (var s in text)
{              
    if (s.Contains("Name"))
    {                       
        if (s.Contains("Name"))
        {
            var desc = s.Substring(s.IndexOf("=") + 1);
            list.Add(desc);
            ListView.Items.Add(desc);                         
        }  
    }
}

我在 Stack Overflow 上找到了这段代码,但它没有得到我想要的所有值。

【问题讨论】:

  • @nozzleman 你看到我的代码我试过分配但没有结果
  • 代码对我来说似乎是正确的(尽管您重复了 if 两次)但这应该可以检查您的文本文件是否有错别字也检查并查看“文本”是否包含文件中的所有行。将断点放在不同的位置,看看问题出在哪里。
  • 如果检查Name,为什么要加倍?
  • @Emad 我想查看所有姓名姓氏和年龄我只看到姓名我如何才能看到所有代码不是我想要的内容

标签: c# visual-studio listview text-files


【解决方案1】:
var names = new List<string>();
var lastnames = new List<string>();

var text = File.ReadAllLines(@"C:\Users\Jal\Desktop\Test.text");
foreach (var s in text)
{
    if (s.Contains("lastname"))
    {        
        var lastname = s.Substring(s.IndexOf("=") + 1);
        lastnames.Add(lastname);
        continue;
    }
    if (s.Contains("name"))
    {        
        var name = s.Substring(s.IndexOf("=") + 1);
        names.Add(name);
        continue;
    }        
}

同样你可以添加其他属性。

【讨论】:

  • s.Contains("lastname")if 语句不会像之前的 s.Contains("name") 那样被访问。需要先写if (s.Contains("lastname"))
  • @MarkBenovsky 好点,我改进了它。并且需要继续。
  • @BWA 第一个 if 语句运行良好,但第二个 if 语句显示 textFile 中的所有值
  • @bf.a 你是什么意思,显示所有值?每行末尾是 ENTER?
【解决方案2】:

s.Contains("Name") 在这种情况下永远不会成立,因为它区分大小写,并且文件中的字符串是“name”。

尝试使用 s.Contains("name")

但是你最好使用正则表达式来处理这种事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    相关资源
    最近更新 更多