bf. a
bf. a

Reputation: 13

How to filter values read from a text file

I want to get a couple of values from a textfile in C#. Example:

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

I only want to get all the "name", "lastname" and ages from the textFile, not the "sex". How can I filter this? I have tried something like this, but it only shows 1 value.

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

I found this code on Stack Overflow, but it doesn't get all of the values I want.

Upvotes: 1

Views: 1042

Answers (2)

BWA
BWA

Reputation: 5764

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

And in same way you can add another properties.

Upvotes: 1

Pedro Luz
Pedro Luz

Reputation: 973

s.Contains("Name") won't ever be true on this case because it's case-sensitive, and your string in the file is "name".

Try using s.Contains("name")

But you would be better off using a Regex for this kind of thing.

Upvotes: 0

Related Questions