首页 > 解决方案 > String.Split() 删除分隔符

问题描述

我正在尝试创建一种方法,该方法将基于两个字符分割蛋白质序列:RK
我的代码正确拆分了蛋白质序列,但随后删除了Ror K。我需要程序能够保留用于拆分字符串的分隔符。

例子:

假设我有一个蛋白质序列 =GLSDEWQKFEGREGKFWER

R然后,我的程序将在有or之后剪切序列K

它最终应该是这样的:

GLSDEWQK

FEGR

EGK

FWER

我的代码:

Dim protein As String = "GLSDEWQKFEGREGKFWER"

Dim words As String() = protein.Split(New Char() {"R", "K"})

For Each word As String In words
    Console.WriteLine(word)
Next

我在 Visual Basic .NET Framework 4.7.2 中编写此代码,我想在终端控制台中显示结果。

标签: vb.netsplitcharacter

解决方案


您可以使用RegEx.Split来包含它被拆分的项目,然后成对加入结果数组:

Dim protein As String = "GLSDEWQKFEGREGKFWER"
Dim splitter = New Regex("([KR])")
Dim wordParts = splitter.Split(protein)
' wordParts is now ("GLSDEWQ", "K", "FEG", "R", "EG", "K", "FWE", "R", "")

' join the wordParts in pairs
Dim words As New List(Of String)
For i = 0 To wordParts.Length - 2 Step 2
    words.Add(wordParts(i) & wordParts(i + 1))
Next

' if there was an odd number of parts, the last one needs to be added
If wordParts.Count Mod 2 = 1 AndAlso Not String.IsNullOrEmpty(wordParts.Last) Then
    words.Add(wordParts.Last)
End If

Console.WriteLine(String.Join(vbCrLf, words))

输出:

GLSDEWQK
FEGR
EGK
FWER

[KR]是一个字符组 - 它会匹配其中的任何字符,并且( )它周围的括号使它捕获它匹配的内容。


推荐阅读