web-dev-qa-db-de.com

Überprüfen Sie, ob die Zeichenfolge leer ist oder alle Leerzeichen in C #.

Wie kann man leicht überprüfen, ob eine Zeichenfolge leer ist oder eine unbestimmte Anzahl von Leerzeichen enthält oder nicht?

28
Cody

Wenn Sie über .NET 4 verfügen, verwenden Sie die string.IsNullOrWhiteSpace-Methode :

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

Wenn Sie nicht über .NET 4 verfügen und Ihre Strings abschneiden können, können Sie es zuerst abschneiden und prüfen, ob es leer ist.

Ansonsten können Sie die Implementierung selbst durchführen:

.Net 3.5 Implementierung von String.IsNullOrWhitespace mit Codeverträgen

55

Wenn Ihnen bereits bekannt ist, dass die Zeichenfolge nicht null ist und Sie nur sicherstellen möchten, dass sie keine leere Zeichenfolge ist, verwenden Sie Folgendes:

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

Wenn Sie buchstäblich wissen müssen, ob die Zeichenfolge leer ist oder eine unbestimmte Anzahl von Leerzeichen enthält, verwenden Sie LINQ wie @Sonia_yt schlägt vor. Verwenden Sie jedoch All(), um sicherzustellen, dass Sie einen effizienten Kurzschluss ausführen, sobald Sie ein nicht gefunden haben -Platz. 

(Dies ist das Gleiche wie das von Shimmy, beantwortet aber die Frage des OPs, die in only geschrieben wurde, prüft auf Leerzeichen und nicht auf alle Leerzeichen - \t, \n, \r, usw. )

/// <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(' '));
}

Und um es in einer Konsolen-App zu testen ...

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

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

Versuchen Sie es mit LinQ zu lösen.

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

Dies gibt true zurück, wenn die Zeichenfolge nicht alle Leerzeichen enthält.

0
Sonia_yt