C#实现name.txt中每个David前插入指定语句的代码补全需求
解决在每个"David"前插入指定语句的C#方案
嘿,我来帮你搞定这个需求!你的核心目标是在name.txt里每一处出现的"David"的前一行插入find my name(或者你示例里的find my word,我会说明怎么调整),对吧?咱们直接完善你的代码,分两种场景处理:
场景1:文件每行一个姓名(符合你“前一行添加”的需求描述)
比如原文件内容是:
Jacob
William
Ethan
James
David
Olivia
David
处理后会变成:
Jacob
William
Ethan
James
find my name
David
Olivia
find my name
David
对应的完整代码:
using System.IO; using System.Text.RegularExpressions; using System.Windows.Forms; private void button1_Click(object sender, EventArgs e) { string filePath = "name.txt"; if (File.Exists(filePath)) { // 读取文件全部内容 string content = File.ReadAllText(filePath); // 要插入的语句,如果你需要加引号就改成 "\"find my word\"" string insertSentence = "find my name"; // 正则匹配所有独立行的David:兼顾行首和行中换行后的情况 // Multiline模式让^/$匹配每行的开头/结尾,确保只匹配整行是David的情况 string regexPattern = @"(^|\n)David$"; // 替换规则:保留原来的行首标记(空或换行),插入语句,再加上David string replacement = $@"$1{insertSentence}\nDavid"; // 执行全局替换 string updatedContent = Regex.Replace(content, regexPattern, replacement, RegexOptions.Multiline); // 将修改后的内容写回文件 File.WriteAllText(filePath, updatedContent); // 可选:提示用户处理完成 MessageBox.Show("姓名文件处理完成!"); } else { MessageBox.Show("找不到name.txt文件,请检查路径!"); } }
场景2:文件是一行内用空格分隔姓名(符合你给出的示例)
如果你的原文件是像这样的单行内容:
Jacob William Ethan James David
想要处理成:
Jacob William Ethan James find my name David
只需要修改正则部分即可,把代码里的正则匹配和替换改成:
// 匹配所有独立的David(前面是行首或空格,避免匹配类似Davidson的情况) string regexPattern = @"(^|\s)David"; // 在David前插入语句和空格 string replacement = $@"$1{insertSentence} David";
小提示
- 如果需要插入带引号的语句(比如你示例里的
"find my word"),把insertSentence改成:string insertSentence = "\"find my word\"";(用转义引号实现) - 记得在代码顶部引入
System.Text.RegularExpressions命名空间,不然正则用不了
内容的提问来源于stack exchange,提问作者sertegh
相关产品推荐
相关产品推荐

