You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除多行TextBox中首字符非1-9数字的行?

解决多行TextBox保留首字符为1-9行的问题

原代码的问题

  • 仅针对首字符为"S"的情况判断,完全不符合需求的筛选逻辑
  • 仅调用TextBox1.Lines.ToArray但未将筛选结果赋值回控件,根本无法修改TextBox内容
  • 遍历过程中没有收集符合条件的行,核心筛选逻辑缺失

正确实现方案

方法1:LINQ快速筛选(简洁高效)

利用LINQ的Where方法直接筛选符合条件的行,一步完成筛选与赋值:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button4.Click
    ' 筛选首字符为1-9的行,自动跳过空行
    Dim filteredLines = TextBox1.Lines.Where(Function(line) 
        If String.IsNullOrWhiteSpace(line) Then Return False
        Dim firstChar = line(0)
        Return firstChar >= "1"c AndAlso firstChar <= "9"c
    End Function).ToArray()
    
    ' 将筛选后的行赋值回TextBox,完成内容更新
    TextBox1.Lines = filteredLines
End Sub

方法2:传统循环收集(适合理解基础逻辑)

通过循环遍历每一行,手动收集符合要求的有效行:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button4.Click
    Dim originalLines() As String = TextBox1.Lines
    Dim validLines As New List(Of String)()
    
    For Each line As String In originalLines
        ' 跳过空行或空白行,避免索引越界
        If String.IsNullOrWhiteSpace(line) Then Continue For
        
        Dim firstChar As Char = line(0)
        ' 判断首字符是否为1-9的数字
        If firstChar >= "1"c And firstChar <= "9"c Then
            validLines.Add(line)
        End If
    Next
    
    ' 将有效行数组赋值给TextBox,完成内容更新
    TextBox1.Lines = validLines.ToArray()
End Sub

关键注意点

  • 必须先判断行是否为空/空白,避免空行引发的索引越界错误
  • 直接通过字符的ASCII范围判断"1"c到"9"c,无需额外转换为数字类型
  • 最终必须将筛选后的数组赋值给TextBox1.Lines,才能真正修改控件显示的内容

内容的提问来源于stack exchange,提问作者AlexPad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 05:50:34