Как я могу использовать Linq, чтобы определить, заканчивается ли эта строка значением (из коллекции)?
Я пытаюсь выяснить, является ли строковое значение EndsWith
другой строкой. Эта "другая строка" - значения из коллекции. Я пытаюсь сделать это как метод расширения для строк.
Напр.
var collection = string[] { "ny", "er", "ty" };
"Johnny".EndsWith(collection); // returns true.
"Fred".EndsWith(collection); // returns false.
3 ответа:
var collection = new string[] { "ny", "er", "ty" }; var doesEnd = collection.Any("Johnny".EndsWith); var doesNotEnd = collection.Any("Fred".EndsWith);
Вы можете создать расширение строки, чтобы скрыть использование
Any
public static bool EndsWith(this string value, params string[] values) { return values.Any(value.EndsWith); } var isValid = "Johnny".EndsWith("ny", "er", "ty");
В .NET framework нет ничего встроенного, но вот метод расширения, который сделает трюк:
public static Boolean EndsWith(this String source, IEnumerable<String> suffixes) { if (String.IsNullOrEmpty(source)) return false; if (suffixes == null) return false; foreach (String suffix in suffixes) if (source.EndsWith(suffix)) return true; return false; }