我正在尝试使用.tostring.remove(n)
从字符串末尾删除字符。使用IIf
语句下面的代码确认字符串是ISNullOrEmpty并返回True
或False
。如果返回true
,则""
的字符串放在aspx页面中(这很好),第二部分出现问题,当IsNullOrEmpty返回False
时会触发。
在False
值处检查字符串长度,如果字符串长度等于或大于17个字符,则返回True
值并使用{{1}截断字符串如果返回.ToString.Remove(n)
值,则保持字符串不受影响。
问题是如果字符串是1个字符或20个字符长,则会出现以下错误:
False
这是代码块:
startIndex must be less than length of string
databinder从中绘制数据的数据库表确实允许NULLS,并且只有当任何给定记录存在NULL或空字符串时才会发生。
请帮助,这让我疯了!!!
答案 0 :(得分:1)
您使用iif
时遇到的问题是每次都会评估整个语句,而不仅仅是真或假部分。这意味着每次都会触发Remove(17)
,无论条件的评估结果如何。
您可以使用以下代码证明这一点:
Dim sValue = IIf(Nothing, DoEval("true"), DoEval("false"))
Console.WriteLine("Final " & sValue)
Private Function DoEval(value As String) As String
Console.WriteLine(value)
Return value
End Function
在这种情况下,您将看到写入输出窗口的true和false。
我们通过使用iif
引入了很多问题,我们已禁止在我们的应用程序中使用它。
切换到传统的if then else
条款会好得多。