VB.NET如何按空格拆分含名称与链接的字符串输出到RichTextBox
VB.NET 字符串拆分需求实现方案
现有代码问题
- 直接将整个文本按单个空格拆分,会把等级标识
[LVL 8]内部的空格、等级与用户名之间的空格全部打散,无法正确组合「等级+用户名」的完整部分 - 循环遍历中直接对
RichTextBox3.Text赋值,每次新值都会覆盖上一次的内容,最终只会保留最后一个拆分结果
正确实现逻辑
因为每行格式固定为「前缀内容(等级+用户名,内部可含空格)+ 链接(无空格)」,所以可以逐行处理,通过查找每行最后一个空格的位置拆分两部分,避免前缀内部空格的干扰。
实现代码
' 先按换行拆分所有行,兼容Windows和Unix换行格式 Dim allLines As String() = RichTextBox2.Text.Split({vbCrLf, vbLf}, StringSplitOptions.RemoveEmptyEntries) ' 分别存储前缀部分和链接部分 Dim prefixList As New List(Of String) Dim linkList As New List(Of String) For Each line As String In allLines ' 查找当前行最后一个空格的索引,链接一定在最后一个空格之后 Dim lastSpacePos As Integer = line.LastIndexOf(" "c) If lastSpacePos > 0 Then ' 截取空格前的所有内容作为前缀,空格后的内容作为链接 prefixList.Add(line.Substring(0, lastSpacePos).TrimEnd()) linkList.Add(line.Substring(lastSpacePos + 1).Trim()) End If Next ' 拼接结果输出,先输出所有前缀,再输出所有链接 RichTextBox3.Text = String.Join(vbCrLf, prefixList) & vbCrLf & String.Join(vbCrLf, linkList)
代码说明
- 优先按行拆分处理,避免不同行的内容互相干扰
- 使用
LastIndexOf定位最后一个空格,完美适配前缀内部存在空格的场景,比按空格拆分所有字段再拼接的方案容错性更高 - 最终用
String.Join批量拼接内容,比循环逐次追加文本的性能更好,也不会出现内容覆盖的问题
内容的提问来源于stack exchange,提问作者Break Inside
相关产品推荐
相关产品推荐

