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

如何统计RichTextBox中指定标识之间的行数?

统计RichTextBox标识间行数的实现方案

核心思路

  1. 将RichTextBox的内容按行拆分,得到每行文本的数组
  2. 定位目标起始标识(如--BEGIN1)和结束标识(如--END1)的行索引
  3. 计算两个索引的差值并减1,得到标识间的有效行数(排除标识行本身)

基础实现代码(C# WinForms)

// 获取RichTextBox的所有行
string[] allLines = richTextBox1.Lines;

// 统计--BEGIN1与--END1之间的行数
int begin1Idx = Array.IndexOf(allLines, "--BEGIN1");
int end1Idx = Array.IndexOf(allLines, "--END1");
int lineCount1 = (begin1Idx != -1 && end1Idx != -1 && end1Idx > begin1Idx) ? end1Idx - begin1Idx - 1 : -1;

// 统计--BEGIN2与--END2之间的行数
int begin2Idx = Array.IndexOf(allLines, "--BEGIN2");
int end2Idx = Array.IndexOf(allLines, "--END2");
int lineCount2 = (begin2Idx != -1 && end2Idx != -1 && end2Idx > begin2Idx) ? end2Idx - begin2Idx - 1 : -1;

// 后续可根据lineCount1、lineCount2的值判断数据是否缺失
// 示例:如果预期行数是4,lineCount1 !=4则提示缺失

兼容带空格的标识场景

如果RichTextBox中的标识行可能包含前后空格(比如--BEGIN1),可以改用遍历匹配的方式,避免匹配失败:

string[] allLines = richTextBox1.Lines;
int begin1Idx = -1;
// 查找--BEGIN1的行索引(忽略前后空格)
for (int i = 0; i < allLines.Length; i++)
{
    if (allLines[i].Trim() == "--BEGIN1")
    {
        begin1Idx = i;
        break;
    }
}

int end1Idx = -1;
// 从BEGIN1之后查找对应的END1
for (int i = begin1Idx + 1; i < allLines.Length && begin1Idx != -1; i++)
{
    if (allLines[i].Trim() == "--END1")
    {
        end1Idx = i;
        break;
    }
}

// 计算行数
int lineCount1 = (begin1Idx != -1 && end1Idx != -1) ? end1Idx - begin1Idx - 1 : -1;

说明

  • 计算结果为-1时,说明标识不存在或顺序错误(比如END在BEGIN之前),可自行添加异常提示
  • 若需要统计多组标识,可封装成方法循环处理,避免重复代码

内容的提问来源于stack exchange,提问作者Alex Bäumler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:01:09