簡體   English   中英

如何在Visual Basic中將String轉換為Integer以進行計算

[英]How to convert String to Integer for calculations in Visual Basic

我目前從Visual Basic的各種輸入框中收到String的輸入。 這是添加到字符串以組成更大的字符串。 字符串如下所示(不用擔心變量名):

Dim String1 As String = "12345"

之后,我要做的是創建一個字符串,每個數字之間都有空格。 這意味着將字符串轉換為此(使用for循環):

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

為此,只要遇到字符串,我都會使用split函數將字符串拆分為Array。 這將創建一個名為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

上面的代碼是我當前用於將新值添加到數組的代碼。 但是,這崩潰了,並給了我以下錯誤:“輸入字符串的格式不正確”。 我可以使用什么方法將此字符串轉換為整數?

我要實現的目標是將字符串中的每個值加在一起,以給我in和integer中的值。

您可以使用這種方法來獲取所需的字符串,其中每個數字都由空格分隔:

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()

另一種選擇是允許轉換忽略數字以​​外的所有內容:

    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

然后,無論使用哪種語法,都可以使用Tim前面演示的Sum():

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

*旁注:由於String實現IEnumerable(Of Char),因此上述兩個版本中的ToCharArray()部分實際上都是不需要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM