Метод IsNullOrEmptyOrWhiteSpace отсутствует

23
задан BartoszKP 15 January 2016 в 01:00
поделиться

6 ответов

String.IsNullOrWhiteSpace был представлен в .NET 4. Если вы не ориентируетесь на .NET 4, вы можете легко написать свой собственный:

public static class StringExtensions
{
    public static bool IsNullOrWhiteSpace(string value)
    {
        if (value != null)
        {
            for (int i = 0; i < value.Length; i++)
            {
                if (!char.IsWhiteSpace(value[i]))
                {
                    return false;
                }
            }
        }
        return true;
    }
}

, который можно использовать следующим образом. :

bool isNullOrWhiteSpace = StringExtensions.IsNullOrWhiteSpace("foo bar");

или как метод расширения , если вы предпочитаете:

public static class StringExtensions
{
    public static bool IsNullOrWhiteSpace(this string value)
    {
        if (value != null)
        {
            for (int i = 0; i < value.Length; i++)
            {
                if (!char.IsWhiteSpace(value[i]))
                {
                    return false;
                }
            }
        }
        return true;
    }
}

, который позволяет использовать его напрямую:

bool isNullOrWhiteSpace = "foo bar".IsNullOrWhiteSpace();

Чтобы метод расширения работал, убедитесь, что пространство имен, в котором определен статический класс StringExtensions, находится в области видимости.

74
ответ дан Darin Dimitrov 15 January 2016 в 01:00
поделиться

Может быть, IsNullOrWhiteSpace это метод, который вы ищете? http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx

7
ответ дан Jean Hominal 15 January 2016 в 01:00
поделиться

Я использовал (в .NET v2.0):

public static class StringExtensions
{
    public static bool IsNullOrEmptyOrWhitespace(this string value)
    {
        return string.IsNullOrEmpty(value) || string.IsNullOrEmpty(value.Trim());
    }
}

Метод Trim() удалит все начальные или конечные пробелы, поэтому, если ваша строка полностью пустая, она будет уменьшена до пустая строка.

Я не могу сказать, что производительность была проблемой.

3
ответ дан Dr Herbie 15 January 2016 в 01:00
поделиться

Достаточно забавно, что никто не использует здесь функцию Trim:

public static class StringExtensions
{
    public static bool IsNullOrEmptyOrWhiteSpace(this string value)
    {
        return string.IsNullOrEmpty(value) ||
               ReferenceEquals(value, null) ||
               string.IsNullOrEmpty(value.Trim(' '));
    }
}

Обновление: Я вижу в комментариях, что теперь это было предложено и отклонено по разным причинам, но там оно есть если кто-то предпочитает краткость эффективности ...

2
ответ дан flq 15 January 2016 в 01:00
поделиться

Вот еще одна альтернативная реализация, просто для развлечения. Возможно, она не будет работать так же хорошо, как реализация Дарина, но это хороший пример LINQ:

public static class StringExtensions
{
    public static bool IsNullOrWhiteSpace(this string value)
    {
        return value == null || value.All(char.IsWhiteSpace);
    }
}
33
ответ дан 28 November 2019 в 22:08
поделиться

Точная копия исходного кода Microsoft для .NET 4 Framework, ..\ RefSrc \ Source.Net \ 4.0 \ DEVDIV_TFS \ Dev10 \ Releases \ RTMRel \ ndp \ clr \ src \ BCL \ System \ String.cs \ 1305376 \ String.cs

    public static bool IsNullOrEmpty(String value) {
        return (value == null || value.Length == 0); 
    }

    public static bool IsNullOrWhiteSpace(String value) {
        if (value == null) return true; 

        for(int i = 0; i < value.Length; i++) { 
            if(!Char.IsWhiteSpace(value[i])) return false; 
        }

        return true;
    }

Примечания

http: //msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx)

IsNullOrWhiteSpace - это удобный метод, похожий на следующий код, за исключением того, что он обеспечивает превосходную производительность :

return String.IsNullOrEmpty(value) || value.Trim().Length == 0;

Символы пробела определены стандартом Unicode. Метод IsNullOrWhiteSpace интерпретирует любой символ, который возвращает значение true, когда он передается в метод Char.IsWhiteSpace как пробельный символ.

2
ответ дан 28 November 2019 в 22:08
поделиться