将字符串更改为字符串数组然后将字符串数组转换为整数数组 VB.NET

Changing String to String Array Then Converting String Array to Integer Array VB.NET

我有这些当前值,我希望其中的数字单独存在一个名为 arrResult() 的数组中。我成功地把数字变成了我想要的形式。然后我想从字符串 aVariables 中传输变量并将它们存储在 arrResult() 中。然后我想将 arrResult() 从字符串数组转换为整数数组,但我不知道该怎么做。

Dim variables As String = "+0.9716 mA,+0.9699 mA,+0.9686 mA,+0.9655 mA,+0.9650 mA,+0.9636 mA,+0.9618 mA,+0.9607 mA,+0.9581 mA,+0.9575 mA,+0.9562 mA,+0.9549 mA,+0.9523 mA"
Dim arrResult() As String = variables.Split(",")
Dim plusVariables As String = variables.Replace("+", "")
Dim mVariables As String = plusVariables.Replace("m", "")
Dim aVariables As String = mVariables.Replace("A", "")
MsgBox(String.Join(vbCrLf, aVariables.Replace(" ", "").Split(",")))

我通常建议远离 VB 运行时函数,即作为 Microsoft.VisualBasic 命名空间中模块成员的函数,但在特定情况下它们可以增加价值。 Val 函数通常是垃圾,但使其成为垃圾的行为在这种特定情况下很有用:

Dim text = "+0.9716 mA,+0.9699 mA,+0.9686 mA,+0.9655 mA,+0.9650 mA,+0.9636 mA,+0.9618 mA,+0.9607 mA,+0.9581 mA,+0.9575 mA,+0.9562 mA,+0.9549 mA,+0.9523 mA"
Dim numbers = text.Split(","c).Select(Function(s) Val(s)).ToArray()

Console.WriteLine(String.Join(Environment.NewLine, numbers))

输出:

0.9716
0.9699
0.9686
0.9655
0.965
0.9636
0.9618
0.9607
0.9581
0.9575
0.9562
0.9549
0.9523

Val 函数从 String 的开头读取 Double,因此每个部分末尾的单位会自动修剪。

另一种选择可能是使用 Linq 仅获取数字或标点符号字符:

    Dim variables As String = "+0.9716 mA,+0.9699 mA,+0.9686 mA,+0.9655 mA,+0.9650 mA,+0.9636 mA,+0.9618 mA,+0.9607 mA,+0.9581 mA,+0.9575 mA,+0.9562 mA,+0.9549 mA,+0.9523 mA"
    Dim arrDoubles() As String = variables.Split(","c).Select(Function(s) New String(s.Where(Function(el) Char.IsDigit(el) OrElse Char.IsPunctuation(el)).ToArray)).ToArray

    Debug.WriteLine(Strings.Join(arrDoubles, vbCrLf))

我同意@jmcilhinney 的观点,令人讨厌的旧 Val 在这种情况下有效。这是没有 Val.

的情况
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim lst As New List(Of Double)
    Dim variables As String = "+0.9716 mA,+0.9699 mA,+0.9686 mA,+0.9655 mA,+0.9650 mA,+0.9636 mA,+0.9618 mA,+0.9607 mA,+0.9581 mA,+0.9575 mA,+0.9562 mA,+0.9549 mA,+0.9523 mA"
    Dim splits = variables.Split(","c)
    For Each s In splits
        Dim Number = CDbl(s.Split(" "c)(0))
        lst.Add(Number)
    Next
    For Each d In lst
        Debug.Print(d.ToString("0.###0"))
    Next
End Sub