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

Tan*_*ner 10 vb.net string

使用VB.NET - 我有一个字符串:

"##RES00012##Some value ##RES00034##Another value"
Run Code Online (Sandbox Code Playgroud)

我想用"##RES"分隔符分割到:

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

string.split函数似乎没有提供过载来分割多个字符或字符数组并维护分隔符,这是功能目的所必需的.

我正在寻找简单地搜索indexOf("##res")和使用字符串操作来做到这一点,除非我错过了一些明显的东西?我搜索过SO以寻求解决方案但却无法找到任何实际上我正在追求的东西.

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

Fre*_*örk 18

拆分多个角色并不是那么棘手; String.Split方法有重载,它执行此操作:

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

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

"00012## Some value "
"00034## Another value"
Run Code Online (Sandbox Code Playgroud)

但是,分隔符被省略.但这并不过分棘手; 它应该预先添加到每个元素(如果字符串不以分隔符开头,则第一个元素除外):

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
Run Code Online (Sandbox Code Playgroud)


小智 15

这是很多额外的代码人员...为什么不使用:

Dim inputs As String = "first value##second value##third value"
Dim parts As String() = Strings.Split(inputs,"##")
Run Code Online (Sandbox Code Playgroud)