[英]Splitting string and assigning split segments to variables
我讨厌从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这是即时消息之后
我喜欢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
因为这给出了一些重复的代码,所以可以将重复行为封装为一个方法(以后可能会更新答案;需要赶紧去训练...)。
如果您的格式是一致的,则正则表达式将是获取此信息的好方法。 如果将正则表达式的各个部分括在方括号中,则以后可以使用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)
您需要验证正则表达式是否正确(在线上有很多站点可以使用正则表达式,并且匹配的组也正确排列(您可以与组一起使用以找出所需的内容)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.