Vb.net 将字符串数组转换为int数组
我尝试了几种不同的方法,但似乎无法使用vb.net获得我想要的结果 我有一个字符串数组。{“55555”、“44444”和“ 我需要一个整数数组{555554444} 这是一个wpf页面,它将数组作为参数发送到crystal报表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
感谢您的帮助。可能是这样的:
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