2010-11-29 180 views
0

我喜欢从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

的9.033这是林后

回答

0

如果你的格式是一致的,那么正则表达式是获取这些信息的好方法。如果您将正则表达式的各个部分括在括号中,则可以稍后使用RegEx结果中的.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) 

你要验证的正则表达式是正确的(有很多网站在网上,你可以使用正则表达式玩,也是匹配的组正常排队(你可以同组打找出你需要什么

+0

我设法编写了以下代码(请参阅eddit) – alf 2010-11-29 15:28:16

1

我喜欢string.SplitTryParse

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 

因为这给了一下的repetetive码,重复行为可以被封装到一个方法(可能稍后更新答案;需要赶往火车......)。