将字符串数组转换为int数组

时间:2012-03-08 20:23:23

标签: vb.net

我尝试了几种不同的方式,似乎无法使用vb.net获得我想要的结果。

我有一个字符串数组。 {“55555”,“44444”,“”}

我需要一个整数数组{55555,44444}

这是一个wpf页面,它将数组作为参数发送到水晶报告。

感谢任何帮助。

6 个答案:

答案 0 :(得分:38)

您可以使用List(Of T).ConvertAll方法:

Dim stringList = {"123", "456", "789"}.ToList
Dim intList = stringList.ConvertAll(Function(str) Int32.Parse(str))

或与代表

Dim intList = stringList.ConvertAll(AddressOf Int32.Parse)

如果您只想使用数组,可以使用Array.ConvertAll method

Dim stringArray = {"123", "456", "789"}
Dim intArray = Array.ConvertAll(stringArray, Function(str) Int32.Parse(str))

哦,我错过了样本数据中的空字符串。然后你需要检查一下:

Dim value As Int32
Dim intArray = (From str In stringArray
               Let isInt = Int32.TryParse(str, value)
               Where isInt
               Select Int32.Parse(str)).ToArray

顺便说一句,这里的方法语法相同,丑陋的as always in VB.NET

Dim intArray = Array.ConvertAll(stringArray,
                        Function(str) New With {
                            .IsInt = Int32.TryParse(str, value),
                            .Value = value
                        }).Where(Function(result) result.IsInt).
                Select(Function(result) result.Value).ToArray

答案 1 :(得分:4)

您可以使用Array.ConvertAll方法:

    Dim arrStrings() As String = {"55555", "44444"}
    Dim arrIntegers() As Integer = Array.ConvertAll(arrStrings, New Converter(Of String, Integer)(AddressOf ConvertToInteger))


    Public Function ConvertToInteger(ByVal input As String) As Integer
        Dim output As Integer = 0

        Integer.TryParse(input, output)

        Return output
    End Function

答案 2 :(得分:1)

也许是这样的:

dim ls as new List(of string)()
ls.Add("55555")
ls.Add("44444")
ls.Add(" ")
Dim temp as integer
Dim ls2 as List(Of integer)=ls.Where(function(x) integer.TryParse(x,temp)).Select(function(x) temp).ToList()

答案 3 :(得分:1)

可能比其他答案多几行代码但是......

    'Example assumes the numbers you are working with are all Integers.
    Dim arrNumeric() As Integer

    For Each strItemInArray In YourArrayName

        If IsNumeric(strItemInArray) Then

            If arrNumeric Is Nothing Then

                ReDim arrNumeric(0)
                arrNumeric(0) = CInt(strItemInArray)

            Else

                ReDim Preserve arrNumeric(arrNumeric.Length)
                arrNumeric(arrNumeric.Length - 1) = CInt(strItemInArray)

            End If

        End If

    Next

答案 4 :(得分:0)

我的$ .02

    Dim stringList() As String = New String() {"", "123", "456", "789", "a"}
    Dim intList() As Integer

    intList = (From str As String In stringList
               Where Integer.TryParse(str, Nothing)
               Select (Integer.Parse(str))).ToArray

答案 5 :(得分:0)

一切都变得容易得多))

Dim NewIntArray = YouStringArray.Select(Function(x) CInt(x)).ToArray