Vb.net 拆分字符串并将拆分的段分配给变量

Vb.net 拆分字符串并将拆分的段分配给变量,vb.net,variables,text-files,Vb.net,Variables,Text Files,我从一个txt文件中读取了以下文本,但我想将三个数字中的每一个都分配到单个变量中,我如何才能做到这一点 (234.134, 105.087, 0.000000) EDDIT: Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim str As String Dim XVAL As String

我从一个txt文件中读取了以下文本,但我想将三个数字中的每一个都分配到单个变量中,我如何才能做到这一点

(234.134, 105.087, 0.000000)
EDDIT:

    Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim str As String
    Dim XVAL As String
    Dim YVAL As String
    Dim ZVAL As String

    Dim strArr() As String
    Dim count As Integer
    str = "(0.123, 4.467, 8.910)"
    strArr = str.Split(", ")
    For count = 0 To strArr.Length - 3
        XVAL = (strArr(count))
    Next
    For count = 0 To strArr.Length - 2
        YVAL = (strArr(count))
    Next
    For count = 0 To strArr.Length - 1
        ZVAL = (strArr(count))
    Next

    Label1.Text = XVAL + ZVAL
    Label2.Text = YVAL
    Label3.Text = ZVAL

End Sub
现在,XVAL和ZVAL的乘积显示为0.123 8.910,而不是0.123+8.910=9.033


如果格式一致,正则表达式将是获取此信息的好方法。如果将正则表达式的部分括在括号中,则可以稍后使用正则表达式结果的.Groups属性检索字符串的这些部分的值。下面是一个简单的例子:

Dim toMatch as String = "(234.134, 105.087, 0.00000)"
Dim regEx as Regex = new Regex("\((\d*(\.\d+)?), (\d*(\.\d+)?), (\d*(\.\d+)?)\)")

Dim match as Match = regEx.Match(toMatch)
Dim var1 as Float = Float.Parse(match.Groups(1).Value)
Dim var2 as Float = Float.Parse(match.Groups(3).Value)
Dim var3 as Float = Float.Parse(match.Groups(5).Value)

您需要验证正则表达式是否正确(网上有很多网站可以使用正则表达式,并且匹配的组排列正确(您可以使用这些组来确定您需要什么)。

我喜欢
string.Split
TryParse

string input = "(234.134, 105.087, 0.000000)";
string[] numbers = input.Split(
                       new[] { ',', ')', '(' }, 
                       StringSplitOptions.RemoveEmptyEntries);
double x, y, z;
if (double.TryParse(numbers[0], 
                    NumberStyles.Any, 
                    CultureInfo.InvariantCulture, 
                    out x))
{
    // first string was not a valid number
}

if (double.TryParse(numbers[1], 
                    NumberStyles.Any, 
                    CultureInfo.InvariantCulture, 
                    out y))
{
    // second string was not a valid number
}

// and so on
由于这会产生一些重复的代码,重复的行为可以封装到一个方法中(以后可能会用这个方法更新答案;需要赶火车……)