如何在字符串中搜索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
相关产品推荐
相关产品推荐

