Эквивалент метода noneMatch() Java в C#
Подскажите, какой в данном слуачи будет эквивалент noneMatch() на C# в следующем Java коде
public static boolean isLowerCase(String text) {
return text
.codePoints()
.noneMatch(Character::isUpperCase);
}
Ответы (1 шт):
Как говорится в источнике:
Метод stream
noneMatch()работает прямо противоположно методуanyMatch(), он возвращаетtrue, если ни один из элементов потока не соответствует заданному предикату, он возвращаетfalse, если какой-либо из элементов потока соответствует условию, заданному предикатом.
В C# нет прямого эквивалента, однако такого же результата можно добится через отрицание результата Any() - аналога anyMatch() в C#.
Пример:
var text = "Some text"
var isLower = !text.Any(symbol => char.IsUpper(symbol));
Другой вариант - использовать метод All(), который возвращает true, только если все члены последовательности удволетворяют предикат.
Пример:
var text = "Some text"
var isLower = text.All(symbol => char.IsLower(symbol));
Есть костыльный вариант:
var text = "Some text"
var isLower = text == text.ToLower();
Можно сделать красивое рассширение для удобства:
public static class StrinExtension
{
public static bool IsLower(this string source)
=> source.All(symbol => symbol.IsLower());
}