2

double と integer を含む文字列 "TextLine" があります。次に、文字列を部分に分割し、結果の文字列配列を double に変換します。残念ながら、それを行おうとすると、(「解析」の) オーバーロード解決エラーが発生します。私は何を間違っていますか?

Dim doubleAry As Double() = Array.ConvertAll(TextLine.Split(vbTab), [Double].Parse)
4

1 に答える 1

3

次のように実行できます。

Dim doubleAry As Double() = Array.ConvertAll(TextLine.Split(vbTab), New Converter(Of String, Double)(AddressOf Double.Parse))

ただし、指定した文字列配列に無効なアイテムが含まれている場合、例外がスローされ、アイテムの変換に失敗します。無効なアイテムを処理し、デフォルトで 0 に設定したい場合は、次のように独自のコンバーターを実装できます。

Private Function DoubleConverter(ByVal text As String) As Double
    Dim value As Double = 0
    Double.TryParse(text, value)
    Return value
End Function

次に、次のように使用できます。

Dim doubleAry As Double() = Array.ConvertAll(TextLine.Split(vbTab), New Converter(Of String, Double)(AddressOf DoubleConverter))
于 2012-12-27T12:24:50.380 に答える