Ras*_*sen 4 regex vb.net split
我想将一个字符串分解等.无论该'字符的情况下,除非有在它前面一个问号(?') -在这种情况下,我不希望分裂.
这样做的最佳方法是什么?
我这样分裂(如果分隔符是Char):
message.Split(New Char() {"'"C})
Run Code Online (Sandbox Code Playgroud)
如果它是一个字符串:
message.Split(New String() {"break"}, StringSplitOptions.None)
Run Code Online (Sandbox Code Playgroud)
然后,我是否必须测试给定数组中的每个项目以查看它是否以?char 结尾,然后再次连接字符串 - 这似乎不是最佳解决方案..?
你必须做一个正则表达式,你会如何在vb.net中做到这一点?
你需要Regex.Split一个(?<!\?)'正则表达式:
Regex.Split(message, "(?<!\?)'")
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示
该(?<!\?)如果一个文字负回顾后会失败的比赛?正好出现在单引号的左侧.
在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
Run Code Online (Sandbox Code Playgroud)