今日一个系统的某个功能抛出一个未引用到实例的错误,检查的结果今天诧异,原因竟然是Replace函数作替换时返回了nothing,问题可以通过以下代码重现:
Dim s As String = Replace("", "a", "b")
If s Is Nothing Then
Response.Write("nothing")
ElseIf s = "" Then
Response.Write("空字符串")
Else
Response.Write("文本内容:" & s)
End If
查阅了Replace的说明文档,该函数确实是这样的一种逻辑,只是以往没有引起注意:
Public Function Replace(ByVal Expression As String, ByVal Find As String, ByVal Replacement As String, Optional ByVal Start As Integer = 1, Optional ByVal Count As Integer = -1, Optional ByVal Compare As Microsoft.VisualBasic.CompareMethod = Binary) As String
成员属于: Microsoft.VisualBasic.Strings
摘要:
返回一个字符串,在该字符串中,指定的子字符串已被另一个子字符串替换了指定的次数。
参数:
Start: 可选。Expression 中的一个位置,从该位置开始搜索子字符串。如果省略,则假定为 1。
Count: 可选。执行子字符串替换操作的次数。如果省略,则使用默认值 –1,它表示“执行所有可能的替换”。
Expression: 必选。包含要替换的子字符串的字符串表达式。
Compare: 可选。数值,指示在计算子字符串时要使用的比较类型。请参阅值的设置。
Replacement: 必选。要替换为的子字符串。
Find: 必选。要搜索的子字符串。
返回值:
如果 Find 长度为零或为 Nothing, ,则 Replace 返回 Expression. 的副本。如果 Replace 长度为零,则 Replace 返回没有 Find. 的 Expression 的副本。如果 Expression 长度为零或为 Nothing,或者 Start 大于 Expression, 的长度,则 Replace 返回 Nothing. 。如果 Count 为 0,则 Replace 返回 Expression. 的副本。