索引和长度错误 - 任何更好的逻辑...?

时间:2013-04-16 05:38:12

标签: vb.net string if-statement

以下代码抛出错误
'索引和长度必须指向字符串中的位置。参数名称:length'

Sub Main()
  Dim Ex As String
  Dim yy As String = 
       (If(String.IsNullOrEmpty(Ex), "", Ex)).ToString().Substring(0, 1000)
End Sub

从上面的代码可以看出,错误是由于字符串Ex是什么都没有。
但要解决这个问题

1. Need to check
   a. Whether the string is Null Or Empty
   b. If not, 
      a. Has more than 1000 chars.....? extract 1000 chars.
      b. Else use the string as it is.

要实现上述逻辑,至少需要2个If子句。
我们有更好的逻辑来实现......?

提前致谢。

1 个答案:

答案 0 :(得分:1)

由于您使用的是VB.NET,所以您只需要:

Dim Ex As String
Dim yy As String = Left(Ex, 1000)

Left function已经知道如何处理Nothing以及短于指定长度的字符串。


如果您想坚持使用.NET方法,解决方案将如下所示:

Dim Ex As String
Dim temp As String = If(Ex, "")
Dim yy As String = If(temp.Length > 1000, temp.Substring(0, 1000), temp)

为了清晰起见,我添加了一个额外的变量:

如果第一个参数为Nothing,则双参数If operator返回第二个参数(否则,它返回第一个参数)。它相当于C#的??

最后一行在使用Substring之前检查字符串的长度,从而避免在示例中出现错误消息。