.Net:空字符串是不是空格字符?

时间:2009-04-07 15:10:20

标签: .net vb.net string null

我总是使用String.IsNullOrEmpty来检查空字符串。它最近引起我的注意,“”计数不是一个空字符串。例如,

 Dim test As String = " "
    If String.IsNullOrEmpty(test) Then
        MessageBox.Show("Empty String")
    Else
        MessageBox.Show("Not Emtpy String")
    End If

它将显示“Not Empty String”。那么我们如何检查字符串中的“”或“”?

编辑:我不知道“”算作角色。

13 个答案:

答案 0 :(得分:13)

尝试使用此方法检查空字符串。它与Trim()版本的不同之处在于它不分配新字符串。它还使用了更广泛的空白概念。

Public Function IsNullOrBlank(ByVal str as String) As Boolean
  if String.IsNullOrEmpty(str) Then
    Return True
  End IF
  For Each c In str
    IF Not Char.IsWhiteSpace(c) Then
      Return False
    End If
  Next
  Return True
End Function

答案 1 :(得分:7)

String.IsNullOrWhiteSpace位于.NET 4中的BCL

答案 2 :(得分:6)

“”是一个ASCII 32值,它与任何其他ASCII字符没有什么不同,除了它“看起来”空白。

答案 3 :(得分:3)

问题是您需要修剪字符串,但是如果在空字符串上调用trim(),则会出错。

string.IsNullOrEmpty(s.Trim())

这会出错。

您需要执行类似

的操作
if (Not string.IsNullOrEmpty(s) AndAlso s.Trim()!=string.Empty)

这将验证字符串是否为空或空,如果有某些内容将修剪,然后验证它不为空。

修改

感谢Slough帮助我学习VB语法。我是一名C#家伙,需要了解vb的语法

答案 4 :(得分:1)

在VB.NET中,你需要使用这样的测试:

If String.IsNullOrEmpty(test) OrElse String.IsNullOrEmpty(test.Trim()) Then

OrElse可防止在test.Trim()

上发生NullException

答案 5 :(得分:1)

public static bool IsNullOrWhite(string s)
{
  if (String.IsNullOrEmpty(s))
    return true;

  for (int i = 0; i < s.Length; i++)
    if (!Char.IsWhiteSpace(s, i))
      return false;

  return true;
}

答案 6 :(得分:0)

也许你只是想在检查它之前修剪字符串(空格)?

Dim test As String = " "
If test.Trim().Length = 0 Then // Best option as long as string is guaranteed not to be null.
//  If test = Nothing OrElse test.Trim().Length = 0 Then // If string can be null.
    MessageBox.Show("Empty String")
Else
    MessageBox.Show("Not Emtpy String")
End If

答案 7 :(得分:0)

如前所述,如果字符串为null,则调用Trim()将抛出NullReferenceException。我有时会使用Regex.IsMatch(test, "^ +$")(希望我有正确的参数顺序)来测试一个或多个空格。 ^和$确保你匹配整个字符串。

答案 8 :(得分:0)

如果你真的需要处理只包含与空字符串或空字符串相同的空白字符的字符串,那么你可以使用像这样的扩展方法(抱歉,它在C#中):

namespace ExtensionMethods
{
    public static class StringExtensions
    {
        public static bool IsNullOrEmptyOrWhitespace(this string str)
        {
            if (string.IsNullOrEmpty(str)) return true;
            return (str.Trim().Length == 0);
        }
    }
}

这允许你写:

using ExtensionMethods;

string s1 = "  ";
string s2 = "some string";

s1.IsNullOrEmptyOrWhitespace(); //-> returns true
s2.IsNullOrEmptyOrWhitespace(); //-> returns false

答案 9 :(得分:0)

If test Is Nothing OrElse test.Trim().Length = 0 Then ...

答案 10 :(得分:-1)

您可以添加一个扩展方法,例如讨论过的here,并保持您以前使用IsNullOrEmpty()时的易用性。

答案 11 :(得分:-1)

If String.IsNullOrEmpty(str) OrElse str.Trim().Length = 0 Then
  ' ..
End If

如果str为null,则以下可能无法正常工作,因为在null上调用方法将导致异常。 如果String.IsNullOrEmpty(str.Trim())那么'有时候例外     ...     结束如果

答案 12 :(得分:-2)

尝试

Dim test As String = " "
If String.IsNullOrEmpty(test.Trim()) Then
    MessageBox.Show("Empty String")
Else
    MessageBox.Show("Not Emtpy String")
End If

希望有所帮助。