【问题标题】:Splitting String with " ' " but NOT " ?' "用“'”而不是“?”分割字符串"
【发布时间】:2016-05-17 07:28:57
【问题描述】:

我想在出现' 字符的任何地方拆分一个字符串除非它前面有一个问号(?') - 在这种情况下我 想要拆分。
这样做的最佳方法是什么?
我是这样拆分的(如果分隔符是字符):

message.Split(New Char() {"'"C}) 

如果是字符串:

message.Split(New String() {"break"}, StringSplitOptions.None)  

然后我是否必须测试给定数组中的每个项目以查看它是否以 ? 字符结尾,然后再次连接字符串 - 这似乎不是最佳解决方案..?
您是否必须制作正则表达式,您将如何在 vb.net 中执行此操作?

【问题讨论】:

    标签: regex vb.net split


    【解决方案1】:

    你需要一个Regex.Split 和一个(?<!\?)' 正则表达式:

    Regex.Split(message, "(?<!\?)'")
    

    regex demo

    如果文字 ? 出现在单个撇号的右侧,则 (?&lt;!\?) 否定后向查找将导致匹配失败。

    在 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
    

    【讨论】:

      猜你喜欢
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多