用'/'分隔,直到'['出现

use*_*112 14 c# regex

我想分割以下类型的字符串:

父/子/值[4za] AX/BY

并通过以下方式创建一个String[]:

String[] ArrayVar = Regex.Split(stringVar, "?");
Run Code Online (Sandbox Code Playgroud)

/在第一次出现之前将字符串分开[.

所以结果我会得到

Array[0] => "Parent"
Array[1] => "Child"
Array[2] => "Value [4za] AX/BY"
Run Code Online (Sandbox Code Playgroud)

字符串也可以有其他格式

父/值[4za] AX/BY

值[4za] AX/BY

我怎样才能做到这一点?

The*_*der 33

您可以使用普通的字符串操作来执行此操作.只需将字符串拆分为第一个,[然后相应地拆分.然后只需将字符串的结尾部分添加到最后一个元素:

string inputstring = "Parent/Child/Value [4za] AX/BY";

int index = inputstring.IndexOf('[');

string[] parts = inputstring.Substring(0, index).Split('/');
parts[parts.Length - 1] += inputstring.Substring(index);
Run Code Online (Sandbox Code Playgroud)

  • 即使编译正则表达式,这可能更快. (3认同)
  • 这个功能可以立即识别出比正则表达式更多的人.这可以简化一点,但总体上更具可读性,即使它需要少量代码. (2认同)

Dmi*_*rov 23

使用负值lookbehind((?<!...)).以下正则表达式意味着" /前面没有开括号":

(?<!\[.*)/
Run Code Online (Sandbox Code Playgroud)

演示

C#demo:https://dotnetfiddle.net/85S3cK