VB.NET使用Regex在单个逗号上拆分字符串,但不在双逗号上

时间:2014-10-13 19:06:57

标签: regex vb.net

有一个文件我正在尝试用于具有以下规则的字符串列表:

  1. 无法使用未转义的逗号开头或结尾。
  2. 逗号由前面的逗号转义。
  3. 字符串由未转义的逗号分隔。
  4. 其他一切都绝对是面值。
  5. 我一直在摆弄一些VB.NET代码来解析这样的文件并将其分成String()List(Of String),但它有点烦人。这不是我无法弄明白的;这是我不想写垃圾代码。如果它不必要地混淆,不必要地缓慢,或者其他任何类似的东西,那就不够好了。

    现在,我知道这几乎听起来有点像Code Review的问题,但我真的开始认为可能一个好的正则表达式比尝试以编程方式更好地工作。不幸的是,正则表达式并不容易使用,并且使用一个字符串告诉它在逗号上转义可能是一件小事,让它也忽略了双逗号,这是一个更多的问题,至少对于那些不是习惯了正则表达式。

    你如何(正确)在VB.NET中这样做?特别是,我在制作一张除了逗号之外什么都不匹配的外卡时遇到了一些麻烦。我还要花一点时间来确定是否必须以编程方式验证#1,或者是否可以在分割操作的同时在正则表达式中进行验证。

    修改

    我只是“醒来”并意识到这种语法含糊不清,因为在三个或更多逗号的奇数系列中,你不知道什么是逃逸的,什么不是。我只是接受当前的答案并继续前进。

1 个答案:

答案 0 :(得分:2)

Haven在很长一段时间内都没有使用VB.net ......但是我没有采用RegEx的方式。

如何将字符串拆分为"," ...

Dim parts As String() = s.Split(New Char() {","c})

您将获得一个项目列表,现在您只需要处理空项目(转义的逗号)并使用正确的前一项目加入它们。

PS:不确定如果" ,,"