1


次のコードは、 「インデックスと長さは文字列内の場所を参照する必要があります。」というエラーをスローします。パラメータ名: length' .

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

上記のコードから、エラーが string Ex is nothing によるものであることは明らかです。
しかし、問題を解決するには

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)

わかりやすくするために、追加の変数を追加しました。

2 パラメーターIf演算子は、最初の引数が Nothing の場合、2 番目の引数を返します (そうでない場合は、最初の引数を返します)。C# の と同等??です。

最後の行は、を使用する前に文字列の長さをチェックするSubstringため、例で表示されるエラーメッセージを回避できます。

于 2013-04-16T05:44:56.603 に答える