2013-04-16 59 views
1

以下代码会引发错误
'索引和长度必须引用字符串中的位置。参数名称:长度'索引和长度错误 - 任何更好的逻辑...?

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如果条款。
我们是否有更好的逻辑来实现上述...?

在此先感谢。

回答

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) 

我增加了一个额外的变量为清楚:

两个参数If operator回报如果第一个参数是Nothing,则返回第二个参数(否则返回第一个参数)。这相当于C#的??

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

+1

哇...左()看起来很酷.....谢谢。 – Sunil