我总是使用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”。那么我们如何检查字符串中的“”或“”?
编辑:我不知道“”算作角色。
答案 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()
答案 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
希望有所帮助。