Delfino
Delfino

Reputation: 1009

Using Regular Expressions inside Lambda Functions - C#

I've a little test program that builds a List of different strings, all of which contain the same formatted number. I also then declare another list which is supposed to contain the specific numbers of each string in the former list.

My plan is to accomplish this by utilizing a regular expression match inside of a lambda function.

Every time I try and do this I get the following error:

enter image description here

List<string> newList = new List<string>(new string[] { "MyName - v 3.7.5.0 ... CPU:",
                                                           "MyName - v  ... CPU: - 1.5.7.2",
                                                           "4.21.66.2 - v  ... CPU:",
                                                           " - v  ... CPU: 31.522.9.0" });
Regex match = new Regex("(\\d+\\.)+\\d");
List<string> otherList = newList.FindAll(str => match.Match(str).Value);

Is there any way I can use lambda functions to accomplish this?

Upvotes: 0

Views: 8346

Answers (3)

Tim.Tang
Tim.Tang

Reputation: 3188

    List<string> newList = new List<string>(new string[] { "MyName - v 3.7.5.0 ... CPU:",
                                                   "MyName - v  ... CPU: - 1.5.7.2",
                                                   "4.21.66.2 - v  ... CPU:",
                                                   " - v  ... CPU: 31.522.9.0" });
    Regex match = new Regex("(\\d+\\.)+\\d"); 
    var result = match.Matches(string.Join(" ", newList)).Cast<Match>().Select(m => m.Value);

Upvotes: 0

huserben
huserben

Reputation: 1096

you can try the following: var otherList = newList.Select(str => match.Match(str).Value);

FindAll expects a Predicate, so you would need to do: newList.FindAll(str => match.IsMatch(str)); But then you would have an IEnumerable that would contain the full strings and not just the numbers you are looking for.

Upvotes: 1

Hung Cao
Hung Cao

Reputation: 3208

You can try this:

List<string> otherList = newList.Select(str => match.Match(str).Value).ToList();

Btw, your code is failing because the predicate is expecting bool.

Upvotes: 7

Related Questions