繁体   English   中英

VB.NET使用正则表达式在单个逗号上拆分字符串,但不在双逗号上拆分

[英]VB.NET Use Regex to split string on single commas, but not on double commas

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

  1. 不能以未转义的逗号开头或结尾。
  2. 逗号由前面的逗号转义。
  3. 字符串之间用未转义的逗号分隔。
  4. 其他所有东西都是绝对有价值的。

我一直在摆弄一些VB.NET代码来解析这样的文件,并将其拆分为String()List(Of String) ,但是这有点烦人。 不是我无法解决这个问题。 那是我不想写废话。 如果它不必要地令人困惑,不必要地缓慢或其他类似的事情,那还不够好。

现在,我知道这听起来似乎有点像一个代码审查问题,但是我真的开始认为,也许一个好的正则表达式比尝试以编程方式来做更好。 不幸的是,正则表达式不易使用,虽然使用正则表达式告诉它以逗号转义可能是一件微不足道的事情,但让它也忽略双逗号,这是一个大问题,至少对于那些不熟悉正则表达式的人而言用于正则表达式。

您如何在VB.NET中(正确地)执行此操作? 特别是,将通配符放在一起几乎可以匹配除逗号以外的所有内容时遇到了一些麻烦。 我还需要一点时间来确定是否必须以编程方式验证#1,或者是否可以在拆分操作的同时在正则表达式本身中进行验证。

编辑

我只是“醒了”,并意识到这种语法是模棱两可的,因为在三个或多个逗号的奇数序列中,您不知道逃脱了什么,没有逃脱了什么。 我将接受当前答案并继续。

很长一段时间没有使用VB.net了……但是我不会用RegEx的方式。

用“,”分割字符串怎么办...

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

您将获得一个项目列表,现在您只需要照顾空项目(转义的逗号),并将它们与正确的前面的项目合并即可。

PS:不确定在“ ,,”情况下拆分是否给您空项目

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM