vb.net - String.Split() 删除分隔符
问题描述
我正在尝试创建一种方法,该方法将基于两个字符分割蛋白质序列:R
和K
。
我的代码正确拆分了蛋白质序列,但随后删除了R
or 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 中编写此代码,我想在终端控制台中显示结果。
解决方案
您可以使用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]
是一个字符组 - 它会匹配其中的任何字符,并且( )
它周围的括号使它捕获它匹配的内容。
推荐阅读
- flutter - 颤动/如何使用相机进行运动检测?
- database - 如何使用 mongoDB 减少聚合查询的数量
- android - 动态表渲染表行内容在android中存在问题
- r - 如何从R中的句子中提取特定的数据值?
- django - 为具有员工用户状态的用户创建具有其他字段的单独模型?
- spring-boot - 如果构造函数有参数,如何创建 bean 和自动装配?
- ios - UICollectionView + Firestore - 加载缓慢
- algorithm - 在 Spring Boot 中使用 Rest API 服务计算 Circle 的面积
- vuejs2 - cypress 如何在 CRUD 测试中获取插入行的 ID?
- php - 如何发送查询以获取两个表的总和?