如何在Visual Basic

时间:2015-08-10 13:35:17

标签: arrays vb.net string integer

我目前从visual Basic中的各个输入框接收String的输入。这是添加到字符串以生成更大的字符串。字符串看起来像这样(不要担心变量名称):

Dim String1 As String = "12345"

在此之后我做的是创建一个在每个数字之间有空格的字符串。这意味着String被转换为this(使用for循环):

Dim newString As String = "1 2 3 4 5"

为此,每当遇到String时,我都会使用split函数将字符串拆分为数组。这将创建一个名为result()的新数组(作为字符串)。

当尝试读取数组中的各个项目时,它会起作用,并且我会返回正确的结果。这是有趣的开始。当单独访问项目并使用" Convert.ToInt32"将它们转换为整数时功能就像一个魅力。它允许我做我想做的事。但是,像这样访问数组中的每个项目都不是一个选项,因为它会很快失控。所以我要做的就是创建一个新的for循环来遍历数组,并将每个项目转换为整数,并在转换它们时将它们加在一起。这就是问题所在。

        Dim calcu As Integer = 0
    For i As Integer = 0 To result.Length - 1
        calcu += Convert.ToInt32(result(i))
    Next i

上面的代码是我目前用于将新值添加到数组的代码。然而,这会崩溃并给我以下错误:"输入字符串的格式不正确"。我可以使用什么方法将此字符串转换为整数?

我想要实现的是将字符串中的每个值加在一起,为我提供一个整数值。

2 个答案:

答案 0 :(得分:2)

您可以使用此方法获取所需的字符串,其中每个数字用空格分隔:

Dim chars As Char() = String1.ToCharArray() 
Dim newString As String = String.Join(" ", chars)

如果您想获取每个数字字符的数值,可以使用Char.GetNumericValue

Dim allInts As Int32() = Array.ConvertAll(chars, Function(c) CInt(Char.GetNumericValue(c)))

如果您想要总和,可以使用Enumerable.Sum

Dim sumOfInts As Int32 = allInts.Sum()

答案 1 :(得分:1)

另一个选项,允许转换忽略不是数字的所有内容:

    Dim String1 As String = "dfdf##%^%&^%^%9 1  xfdsafadf   12dfdfd3  45"

    Dim ints As List(Of Integer) = String1.ToCharArray.Where(Function(x) Char.IsDigit(x)).Select(Function(x) CInt(Char.GetNumericValue(x))).ToList

    For Each i As Integer In ints
        Debug.Print(i)
    Next

使用不同的语法:

    Dim String1 As String = "dfdf##%^%&^%^%9 1  xfdsafadf   12dfdfd3  45"

    Dim ints = From i In String1.ToCharArray
               Where Char.IsDigit(i)
               Select CInt(Char.GetNumericValue(i))

    For Each i As Integer In ints
        Debug.Print(i)
    Next

然后,无论使用哪种语法,都可以使用Sum(),如前面所示:

    Debug.Print("Sum = " & ints.Sum)

*旁注:以上任一版本中的ToCharArray()部分实际上不是必需的,因为String实现了IEnumerable(Of Char)。