查看TelephoneNumber属性中是否有一些不会修剪为空字符串的字符串的最佳方法是什么?我讨厌在Nothing上使用Trim VB.NET函数,只要在TelephoneNumber为Nothing时给我一个空字符串。
Public Class TelephoneNumberType
Public Property TelephoneNumber() As String
End Class
Public Class Form1
Private _PhoneObj As BusinessObjects.TelephoneNumberType
Public Sub MySub
If _PhoneObj IsNot Nothing AndAlso _
_PhoneObj.TelephoneNumber isNot Nothing AndAlso _
_PhoneObj.TelephoneNumber.Trim <> String.Empty Then
MessageBox.Show("I have a non blank phone!")
End If
End Sub
End Class
编辑:
查看接受的答案,然后按以下方式调用
If _PhoneObj IsNot Nothing AndAlso _
_PhoneObj.TelephoneNumber.IsNullOrEmpty Then
MessageBox.Show("I have a non blank phone!")
End If
让我感到困惑的是,“IsNullOrEmpty”函数作为字符串实例的扩展方法,即使String是NOTHING也是如此。为什么这个扩展方法可以工作,但直接遵循 - .NET代码引发异常?
Dim s as string
If s.trim() = "" Then
Message.Box.Show("This will never print")
End If
答案 0 :(得分:6)
您可以通过调用String.IsNullOrWhiteSpace(需要.NET 4)来替换它:
If _PhoneObj IsNot Nothing AndAlso Not String.IsNullOrWhitespace(_PhoneObj.TelephoneNumber) Then
MessageBox.Show("I have a non blank phone!")
End If
答案 1 :(得分:1)
像我一样使用StringExtensions模块。我为我的项目创建了这个:
Option Explicit On
Option Strict On
Imports System.Runtime.CompilerServices
Public Module StringExtensions
<Extension()> _
Public Function IsNullOrEmpty(ByVal s As String) As Boolean
Return s Is Nothing OrElse s.Trim.Length.Equals(0)
End Function
<Extension()> _
Public Function IsNotNullOrEmpty(ByVal s As String) As Boolean
Return s IsNot Nothing AndAlso s.Trim.Length > 0
End Function
End Module
这允许您执行以下操作:
Dim s1 As String = Nothing
Dim s2 As String = String.Empty
Dim s3 As String = "123"
If s1.IsNullOrEmpty Then
'Do Something
End If
If s2.IsNullOrEmpty Then
'Do Something
End If
If s3.IsNotNullOrEmpty Then
'Do Something
End If
所有这些都非常简单易用。
编辑:
这是我为我的需要而做的一个伟大的帮助扩展,我将为你投入:
<Extension()> _
Public Function ContainsAny(ByVal s As String, ByVal ParamArray values As String()) As Boolean
If s.IsNotNullOrEmpty AndAlso values.Length > 0 Then
For Each value As String In values
If s.Contains(value) Then Return True
Next
End If
Return False
End Function
答案 2 :(得分:1)
最简单的简洁代码肯定是
If Trim(str) = "" Then
'' Nothing, "" or whitespace
可以工作,因为VB将Nothing视为等同于“”,并且因为Microsoft.VisualBasic函数Trim是一个函数,而不是实例方法,所以它对Nothing很满意
答案 3 :(得分:0)
if(!string.IsNullorEmpty(str) && str.Trim() != string.Empty)
//non empty string
else
//emptry string