如何在C#中为指定格式行的末尾添加右括号?
需求与代码修复
需求:将文本中所有包含「create view」的行,转换为CSQL_CREATE_VIEW (视图名)格式(每行末尾添加右括号,最终效果为CSQL_CREATE_VIEW (视图名)\n),但当前代码无法实现该功能,需要修复。
当前问题代码
string[] Files = System.IO.Directory.GetFiles(@"filepath"); string path = @"outputTextPath"; foreach (string s in Files) { string fileCont = System.IO.File.ReadAllText(s); if(fileCont.Contains("create view") == true) { File.AppendAllText(path, fileCont.Replace("create view","CSQL_CREATE_VIEW (")); if (fileCont == "\r" && fileCont.Contains("CSQL_CREATE_VIEW (")) { File.AppendAllText(path, ")" + Environment.NewLine); } } }
代码问题分析
- 未按行处理:直接读取整个文件内容替换,无法针对单个目标行精准添加右括号
- 判断逻辑错误:
fileCont == "\r"永远不成立(fileCont是整个文件内容,不可能等于单个换行符),导致末尾的右括号永远不会被添加 - 追加方式错误:直接替换整个文件内容追加到输出,会导致重复内容且格式混乱
修复后的代码
string[] files = System.IO.Directory.GetFiles(@"filepath"); string outputPath = @"outputTextPath"; foreach (string filePath in files) { // 按行读取文件内容 string[] lines = System.IO.File.ReadAllLines(filePath); foreach (string line in lines) { string processedLine = line; // 针对包含"create view"的行进行处理 if (processedLine.Contains("create view")) { // 替换前缀后,在该行末尾添加右括号 processedLine = processedLine.Replace("create view", "CSQL_CREATE_VIEW (") + ")"; } // 将处理后的行写入输出文件(Append模式保留原有内容) System.IO.File.AppendAllText(outputPath, processedLine + Environment.NewLine); } }
说明
- 按行读取文件,确保只修改包含
create view的目标行 - 在替换前缀后直接在该行末尾添加右括号,严格符合需求格式
- 逐行追加到输出文件,避免内容混乱
内容的提问来源于stack exchange,提问作者Vemala Valas
相关产品推荐
相关产品推荐

