Strings.Replace 方法是用在字符串取代常用方法,常用的呼叫方式如下
可是最近发现一个问题,就是当原字符串为 String.Empty (空字符串) 时,其传回值会为 Nothing。
如下程序代码会发生「参考的对象具有 'Nothing' 的值」的错误讯息。因为原字符串为空字符串,透过 Strings.Replace 方法会传回 Nothing,所以会造成这个错误。
Strings.Replace("原字符串","寻找的字符串","取代的字符串")
可是最近发现一个问题,就是当原字符串为 String.Empty (空字符串) 时,其传回值会为 Nothing。
如下程序代码会发生「参考的对象具有 'Nothing' 的值」的错误讯息。因为原字符串为空字符串,透过 Strings.Replace 方法会传回 Nothing,所以会造成这个错误。
Strings.Replace(string.Empty,"@","").Length
所以在使用 Strings.Replace 方法要特别注意这点,防止发生异常的错误。而我的作法就是撰写另一个 StrReplace 方法来取代 Strings.Replace 方法,防止这类错误。
''' <summary>
''' 字符串取代。
''' </summary>
''' <param name="Expression">原始字符串。</param>
''' <param name="Find">搜寻的子字符串。</param>
''' <param name="Replacement">取代的子字符串。</param>
Public Shared Function StrReplace(ByVal Expression As String, _
ByVal Find As String, ByVal Replacement As String) As String
If String.IsNullOrEmpty(Expression) Then
Return String.Empty
Else
Return Replace(Expression, Find, Replacement)
End If
End Function
''' 字符串取代。
''' </summary>
''' <param name="Expression">原始字符串。</param>
''' <param name="Find">搜寻的子字符串。</param>
''' <param name="Replacement">取代的子字符串。</param>
Public Shared Function StrReplace(ByVal Expression As String, _
ByVal Find As String, ByVal Replacement As String) As String
If String.IsNullOrEmpty(Expression) Then
Return String.Empty
Else
Return Replace(Expression, Find, Replacement)
End If
End Function