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 个 If 子句。
我们有没有更好的逻辑来实现上面...?

提前致谢。

4

1 回答 1

1

由于您使用的是 VB.NET,因此您只需要:

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

Left函数已经知道如何处理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运算符返回第二个参数(否则,它返回第一个参数)。它相当于 C# 的??.

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

于 2013-04-16T05:44:56.603 回答