代码之家  ›  专栏  ›  技术社区  ›  Tanner

如何使用多字符分隔符拆分字符串并维护分隔符

  •  10
  • Tanner  · 技术社区  · 15 年前

    使用vb.net-我有一个字符串:

    "##RES00012##Some value ##RES00034##Another value"
    

    我想用 "##RES" 作为分隔符:

    "##RES00012## Some value" "##RES00034## Another value"

    这个 string.split 函数似乎不提供对多个字符或字符数组进行拆分和维护分隔符的重载,这是函数用途所必需的。

    我只是在寻找 indexOf("##res") 使用字符串操作来完成这个,除非我遗漏了一些明显的东西?我已经搜索了一个解决方案,但找不到任何真正能满足我要求的东西。

    以下是我找到的最接近的: how-do-i-split-a-string-by-a-multi-character-delimiter-in-c

    2 回复  |  直到 6 年前
        1
  •  18
  •   Fredrik Mörk    15 年前

    拆分多个字符并不复杂;字符串上有重载。拆分方法可以做到这一点:

    Dim input As String = "##RES00012## Some value ##RES00034## Another value"
    Dim parts As String() = input.Split(New String() {"##RES"}, StringSplitOptions.RemoveEmptyEntries)
    

    这将为您提供一个包含两个元素的数组:

    "00012## Some value "
    "00034## Another value"
    

    但是,分隔符被省略了。不过,这并不太复杂;它应该在每个元素前面加上前缀(如果字符串不是以分隔符开头,则第一个元素除外):

    Dim input As String = "##RES00012## Some value ##RES00034## Another value"
    Dim parts As String() = input.Split(New String() {"##RES"}, StringSplitOptions.RemoveEmptyEntries)
    
    For i As Integer = 0 To parts.Length - 1
        If i > 0 OrElse input.StartsWith("##RES") = True Then
            parts(i) = "##RES" & parts(i)
        End If
    Next
    
        2
  •  13
  •   Imane Fateh bartekordek    11 年前

    有很多额外的代码人员…为什么不直接使用:

    Dim inputs As String = "first value##second value##third value"
    Dim parts As String() = Strings.Split(inputs,"##")