Vb.net 将字符串数组转换为int数组

Vb.net 将字符串数组转换为int数组,vb.net,Vb.net,我尝试了几种不同的方法,但似乎无法使用vb.net获得我想要的结果 我有一个字符串数组。{“55555”、“44444”和“ 我需要一个整数数组{555554444} 这是一个wpf页面,它将数组作为参数发送到crystal报表 感谢您的帮助。可能是这样的: dim ls as new List(of string)() ls.Add("55555") ls.Add("44444") ls.Add(" ") Dim temp as integer Dim ls2 as List(Of integ

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

我有一个字符串数组。{“55555”、“44444”和“

我需要一个整数数组{555554444}

这是一个wpf页面,它将数组作为参数发送到crystal报表


感谢您的帮助。

可能是这样的:

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()
您可以使用以下方法:

或者与代表一起

Dim intList = stringList.ConvertAll(AddressOf Int32.Parse)
如果只想使用阵列,可以使用:

哦,我错过了示例数据中的空字符串。然后您需要检查以下内容:

Dim value As Int32
Dim intArray = (From str In stringArray
               Let isInt = Int32.TryParse(str, value)
               Where isInt
               Select Int32.Parse(str)).ToArray
顺便说一下,这里的方法语法是一样的,丑陋的:


您可以使用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

也许比其他答案多出几行代码,但是

    '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
我的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
一切都容易多了


我不希望从字符串数组移动到字符串列表,再移动到整数列表,再移动到整数数组。希望从一个阵列转到另一个阵列。我们将对此进行测试。Thx.如果目的是删除不能正确转换的项,那么使用(整数)列表比使用数组更有效,因为如果不先检查它们是否都可以转换,就不知道数组的大小。@Primetime:与数组一样有效。。。您只需使用
ToArray
而不是
ToList
@Primetime,就不需要从字符串数组移动到字符串列表。我也不想那样做,所以我不想这个答案很好。Arion帮助中的我的代码将字符串拆分为字符串数组(使用Split),然后使用字符串数组中的.Where。它不必是(字符串的)列表。。。。您缺少OP示例数据中的空字符串。我不确定它是否隐含,但这不包括转换失败的情况(空字符串)。@vcsjones:您是对的,我缺少示例数据中的空字符串,相应地编辑了我的答案。我认为当你抓取ConvertAll委托时它并不难看:
Dim tempInt%:Dim intA As Int32()=intStrA.Where(函数(x)Int32.TryParse(x,tempInt)).Select(函数(x)tempInt.ToArray()
我甚至没有意识到VB.NET在此之前有lambdas。
stringList.ConvertAll(Int32.Parse的地址)
向meNote寻求更清晰的解决方案:
CINT
如果值是数值但超出整数范围,则会抛出一个
OverflowException
,因为对于十进制范围内的值也会返回
true
。如果该值包含一个
,则情况也是如此,因为这可能会转换为双精度。因此,在代码块的开头会出现警告注释,但解释得很好。
    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
    '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
    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
Dim NewIntArray = YouStringArray.Select(Function(x) CInt(x)).ToArray