My goal is to match the users input into a field with data in a text file.
1000|I-002096.02.02|EL|MISCMI
1000|I-002097.02.02|EL|ESYEED
1000|I-002098.02.02|EL|MISCCA
1000|I-002099.02.02|EL|MISCCA
1000|I-002100.02.02|EL|MISCCA
1000|I-002101.02.02|EL|USQUIC00
1000|I-002102.02.02|EL|MISCMI
The portion after the first "|" delimiter is what I need to check against the users input. (users input is stored in TxtWBS.Text in the code below)
This is what I have tried but this only works when each line has nothing to delimit.
string[] wbslist = File.ReadAllLines(filePath);
bool wbsExists = Array.Exists(wbslist, element => element == TxtWBS.Text);
if (wbsExists)
/*leave empty*/;
else
errMessage += "This WBS does not exist" + Environment.NewLine;
I expect to be able to check if the users input exists in the text file.
This could be done with a single line in Linq. Change your test to:
bool wbsExists = wbslist.Any(x => x.Contains(TxtWBS.Text));
And if you are not sure about the case of the input you can have
bool wbsExists = wbslist.Any(x => -1 != x.IndexOf(TxtWBS.Text, StringComparison.CurrentCultureIgnoreCase));
More, if you want to check an exact match against the second item in the line then
bool wbsExists = wbslist.Select(x => x.Split('|')[1]).Any(k => k == TxtWBS.Text);
Consider also to change the loading of your text data to
var wbslist = File.ReadLines(filePath);
File.ReadLines doesn't read all the lines in memory immediately but returns an IEnumerable<String>
that is more suited in Linq expressions
You can use the following code. Read file and iterate line by line, splitting each line into array of strings by token '|'.
string[] wbslist = File.ReadAllLines(filePath);
foreach(string line in wbslist)
{
string [] splittedLine = line.Split('|');
// I assume you need the second element in the delimited line
if(string.Equals(splittedLine[1], TxtWBS.Text, StringComparison.OrdinalIgnoreCase))
Console.WriteLine("Website found");
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With