patterncsharpMinor
Checking if string contains other strings
Viewed 0 times
checkingcontainsotherstringsstring
Problem
This is simply an extension method which checks if a string
However, there are cases when
Should this piece of code be refactored?
str contains all the values in values.However, there are cases when
str might be null, values might be null, or any item in values might be null. I am handling those cases by using the ternary ?:, null-conditional ?. and null-coalesce ?? operators.Should this piece of code be refactored?
public static bool ContainsAll(this string str, string[] values)
{
return str == null ? false : values?.All(v => str.Contains(v ?? "")) ?? false;
}Solution
I like the ternary operator but in this case I wouldn't use it because a single expression that makes sure both variables are valid and then searching for the strings is easier to understand I think.
The
If you decorate the second parameter with
The
v ?? "" isn't very pretty, especially the "" part which actually should be string.Empty. You could get rid of it by filtering the array and skipping the empty and null elements.public static bool ContainsAll(this string str, params string[] values)
{
return
!string.IsNullOrEmpty(str) &&
values != null &&
values
.Where(x => !string.IsNullOrEmpty(x))
.All(v => str.Contains(v));
}If you decorate the second parameter with
params keyword then you can just type the values without an array (if you need to):"text".ContainsAll("t", null);Code Snippets
public static bool ContainsAll(this string str, params string[] values)
{
return
!string.IsNullOrEmpty(str) &&
values != null &&
values
.Where(x => !string.IsNullOrEmpty(x))
.All(v => str.Contains(v));
}"text".ContainsAll("t", null);Context
StackExchange Code Review Q#153927, answer score: 8
Revisions (0)
No revisions yet.