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

如何在字符串中搜索SERIAL关键词并返回其本身及后续69个字符

问题分析

你现有代码存在两个核心问题:

  • Substring() 方法返回的是单个字符串,直接赋值给 string[] 类型的 splitkeys 会触发编译错误,也无法通过 foreach 遍历
  • 直接调用 IndexOf("SERIAL") 只会返回第一个匹配关键词的位置,无法匹配字符串中所有的SERIAL条目

正确实现代码

string input = richTextBox1.Text;
string targetKeyword = "SERIAL";
// 总截取长度 = 关键词本身长度 + 后续需要提取的69字符
int totalExtractLength = targetKeyword.Length + 69;
int searchStartIndex = 0;

while (true)
{
    // 从当前起始位置查找目标关键词
    int matchPos = input.IndexOf(targetKeyword, searchStartIndex);
    // 无更多匹配项时退出循环
    if (matchPos == -1) break;
    // 边界校验:剩余字符不足总截取长度时跳过,避免抛出索引越界异常
    if (matchPos + totalExtractLength > input.Length)
    {
        searchStartIndex = matchPos + 1;
        continue;
    }
    // 截取目标内容并输出到文本框
    string extractResult = input.Substring(matchPos, totalExtractLength);
    richTextBox2.AppendText(extractResult + "\n\n");
    // 移动查找起始位置,避免重复匹配同一条目
    searchStartIndex = matchPos + 1;
}

逻辑说明

  • 循环调用IndexOf时传入动态更新的查找起始位置,可覆盖字符串中所有出现的SERIAL关键词
  • 增加边界校验逻辑,避免字符串尾部剩余长度不足时触发运行时异常
  • 每次匹配完成后移动查找起始位置,避免死循环和重复匹配同一位置的关键词

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:06:05