0

我有一个格式如下的字符串:

[0:2]={1.1,1,5.1.2}

我的要求是在运算符之后拆分花括号内的值=,并将它们存储到字符串数组中。我曾尝试通过使用Substring()andIndexOf()方法来拆分部分,并且成功了。但是我需要一种更简洁优雅的方式来通过正则表达式实现这一点。

有没有人有线索来满足我的要求?

4

4 回答 4

2

这是您的完整 RegEx 解决方案:

Dim input As String = "[0:2]={1.1,1,5.1.2}"

Dim match = Regex.Match(input, "\[\d:\d\]={(?:([^,]+),)*([^,]+)}")

Dim results = match.Groups(1).Captures.Cast(Of Capture).Select(Function(c) c.Value).Concat(match.Groups(2).Captures.Cast(Of Capture).Select(Function(c) c.Value)).ToArray()

不要认为它比标准拆分更具可读性:

Dim startIndex = input.IndexOf("{"c) + 1
Dim length = input.Length - startIndex - 1
Dim results = input.Substring(startIndex, length).Split(",")
于 2013-03-26T07:56:09.487 回答
1

您可以使用正则表达式来提取花括号内的值,然后使用普通的Split

Regex.Match("[0:2]={1.1,1,5.1.2}", "{(.*)}").Groups(1).Value.Split(","c)
于 2013-03-26T07:53:46.100 回答
0
Dim s As String = "[0:2]={1.1,1,5.1.2}";

Dim separatorChar as char = "="c;
Dim commaChar as char = ","c;
Dim openBraceChar as char = "{"c;
Dim closeBraceChar as char = "}"c;

Dim result() as String = 
  s.Split(separatorChar)(1)
   .trim(openBraceChar)
   .trim(closeBraceChar)
   .split(commaChar);

(假设它有效!在 iPad 上输入,因此无法轻松验证语法,但主体应该是正确的)。

编辑:更新为 VB,因为在 c# 语法中显示有效的 .net 方法而被否决。

于 2013-03-26T07:55:42.403 回答
-1

如果你想使用正则表达式

Dim s() As String=Regex.match(str,"(={)(.*)(})").Groups(1).Tostring.split(',');
于 2013-03-26T07:58:21.203 回答