📜  最佳实践 c# 检查字符串是否为空或空格 - C# (1)

📅  最后修改于: 2023-12-03 15:10:34.433000             🧑  作者: Mango

最佳实践 C# 检查字符串是否为空或空格

在 C# 编程中,经常需要检查一个字符串是否为空或者只包含空格。这种情况下,可以使用以下几种方法:

方法1:使用 string.IsNullOrEmpty() 方法

我们可以使用 .NET 自带的 string.IsNullOrEmpty() 方法来检查一个字符串是否为空或者为 null

string str = "  "; // 这是一个只包含空格的字符串,也被视为"空"
if (string.IsNullOrEmpty(str) || string.IsNullOrWhiteSpace(str))
{
    Console.WriteLine("字符串为空或只包含空格");
}
else
{
    Console.WriteLine("字符串不为空且不只包含空格");
}

上面的代码运行结果如下:

字符串为空或只包含空格
方法2:使用 string.IsNullOrWhiteSpace() 方法

string.IsNullOrWhiteSpace() 方法可以判断字符串是否为空、只包含空格或者为 null

string str = "  "; // 这是一个只包含空格的字符串,也被视为"空"
if (string.IsNullOrWhiteSpace(str))
{
    Console.WriteLine("字符串为空或只包含空格");
}
else
{
    Console.WriteLine("字符串不为空且不只包含空格");
}

上面的代码运行结果与方法1相同。

方法3:使用正则表达式

我们也可以使用正则表达式判断一个字符串是否为空或只包含空格。

string str = "  "; // 这是一个只包含空格的字符串,也被视为"空"
if (Regex.IsMatch(str.Trim(), @"^\s*$"))
{
    Console.WriteLine("字符串为空或只包含空格");
}
else
{
    Console.WriteLine("字符串不为空且不只包含空格");
}

上面的代码使用了 Regex.IsMatch() 方法和 \s^$ 正则表达式模式。

  • \s 表示空格符
  • ^ 表示字符串的开头
  • $ 表示字符串的结尾

所以,\s* 表示零个或多个空格符,而 ^$ 包括了整个字符串。如果字符串为空或只包含空格,那么 Trim() 后的字符串就是空字符串,而正则表达式可以将空字符串匹配出来。

所以,以上的方法能够判断字符串是否为空,但不能判断字符串是否为非法输入(例如:大量空格、制表符、换行符号等)。如果需要过滤掉这些非法输入,需要使用其它的方法(例如:输入框预处理、正则表达式等)。