web-dev-qa-db-fra.com

Vérifier si la chaîne est vide ou tous les espaces en C #

Comment vérifier facilement si une chaîne est vide ou pleine d'un nombre d'espaces indéterminé ou non?

28
Cody

Si vous avez .NET 4, utilisez la méthode string.IsNullOrWhiteSpace :

if(string.IsNullOrWhiteSpace(myStringValue))
{
    // ...
}

Si vous ne possédez pas .NET 4 et que vous pouvez supporter de couper vos chaînes, vous pouvez d'abord le couper, puis vérifiez s'il est vide.

Sinon, vous pourriez envisager de le mettre en œuvre vous-même:

.Net 3.5 Implémentation de String.IsNullOrWhitespace avec des contrats de code

55

Si vous savez déjà que la chaîne n'est pas nulle et que vous voulez simplement vous assurer que ce n'est pas une chaîne vide, utilisez les éléments suivants:

public static bool IsEmptyOrWhiteSpace(this string value) =>
  value.All(char.IsWhiteSpace);
29
Shimmy

Si vous avez littéralement besoin de savoir si la "chaîne est vide ou pleine d'un nombre d'espaces indéterminé", utilisez LINQ comme le suggère @Sonia_yt, mais utilisez All() pour vous assurer de court-circuiter dès que vous avez trouvé un non -espace. 

(C'est à peu près le même que Shimmy, mais répond à la question du PO telle qu'elle est écrite dans le contrôle seulement], pas pour tous les espaces - \t, \n, \r, etc. )

/// <summary>
/// Ensure that the string is either the empty string `""` or contains
/// *ONLY SPACES* without any other character OR whitespace type.
/// </summary>
/// <param name="str">The string to check.</param>
/// <returns>`true` if string is empty or only made up of spaces. Otherwise `false`.</returns>
public static bool IsEmptyOrAllSpaces(this string str)
{
    return null != str && str.All(c => c.Equals(' '));
}

Et pour le tester dans une application console ...

Console.WriteLine("    ".IsEmptyOrAllSpaces());      // true
Console.WriteLine("".IsEmptyOrAllSpaces());          // true
Console.WriteLine("  BOO  ".IsEmptyOrAllSpaces());   // false

string testMe = null;
Console.WriteLine(testMe.IsEmptyOrAllSpaces());      // false
0
ruffin

Essayez d'utiliser LinQ pour résoudre?

if(from c in yourString where c != ' ' select c).Count() != 0)

Cela retournera true si la chaîne ne contient pas tous les espaces.

0
Sonia_yt