我希望在dBContext
字符存在的情况下拆分字符串,除非前面有一个问号('
) - 在这种情况下我不要想要分手
这样做的最佳方式是什么?
我这样分裂(如果分隔符是Char):
?'
如果它是一个字符串:
message.Split(New Char() {"'"C})
然后我是否必须测试给定数组中的每个项目以查看它是否以message.Split(New String() {"break"}, StringSplitOptions.None)
字符结尾,然后再次连接字符串 - 这似乎不是最佳解决方案。 ?
你必须做一个正则表达式,你会如何在vb.net中做到这一点?
答案 0 :(得分:5)
您需要Regex.Split
(?<!\?)'
正则表达式:
Regex.Split(message, "(?<!\?)'")
请参阅regex demo
如果文字(?<!\?)
出现在单撇号的左侧,则?
否定后瞻会使匹配失败。
在VB.NET中,您可以使用Linq删除此正则表达式分割所带来的任何空字符串:
Dim message As String = "'sss?'ss'"
Dim my_result() As String = Regex.Split(message, "(?<!\?)'") _
.Where(Function(strn As String) String.IsNullOrWhiteSpace(strn) = False) _
.ToArray()
Console.WriteLine(String.Join(", ", my_result))
' => sss?'ss