在C#的Split中逃避角色()

Lee*_*ite 7 c# string split escaping

我正在解析一些分隔符分隔值,如果?分隔符作为其中一个值的一部分出现,则将其指定为转义字符.

例如:if :是分隔符,某个字段是值19:30,这需要写为19?:30.

目前,我使用string[] values = input.Split(':');以获取所有值的数组,但在了解了这个转义字符后,这将不再起作用.

有没有办法让Split逃避字符考虑在内?我检查了重载方法,似乎没有直接这样的选项.

Ale*_* K. 10

string[] substrings = Regex.Split("aa:bb:00?:99:zz", @"(?<!\?):");
Run Code Online (Sandbox Code Playgroud)

对于

aa
bb
00?:99
zz
Run Code Online (Sandbox Code Playgroud)

或者你可能想要unescape?:在某些时候,用另一个令牌替换输入中的序列,拆分并替换回来.

(这需要使用System.Text.RegularExpressions命名空间.)

  • ...除非您将`??` 视为“逃脱”。 (2认同)
  • Serg 提出了一个很好的观点,但据我所知,转义字符永远不会被转义。似乎他们故意选择了“?”,因为他们知道它永远不会作为值的一部分出现。 (2认同)