C# 如何替换文件中sg.ShadowQuality=开头的行,无需匹配等号后任意内容
解决方案
核心用正则表达式实现前缀匹配替换,不需要提前知道配置项的旧值,只要匹配sg.ShadowQuality=开头的行即可完成整项值替换。
实现步骤
- 先引入正则命名空间
using System.Text.RegularExpressions;
- 优化后的业务代码
FileInfo GameUserSettings = new FileInfo(@SD + GUSDirectory); GameUserSettings.IsReadOnly = false; string text = File.ReadAllText(SD + GUSDirectory); // 正则匹配:匹配所有以sg.ShadowQuality=开头的行,忽略等号后内容 string pattern = @"^sg\.ShadowQuality=.*$"; string replacement = $"sg.ShadowQuality={Shadows.Value}"; // 开启多行模式,让^符号匹配每一行的开头而非整个文本的开头 text = Regex.Replace(text, pattern, replacement, RegexOptions.Multiline); File.WriteAllText(SD + GUSDirectory, text); // 后续自行补充改回只读属性的逻辑
正则逻辑说明
^:匹配行起始位置,配合RegexOptions.Multiline实现按行匹配\.:转义匹配原文本的.字符,避免正则把.当成通配符.*:匹配任意数量的任意字符,覆盖等号后所有可能的旧值$:匹配行结束位置,确保只替换当前行的内容,不会影响其他行
内容的提问来源于stack exchange,提问作者LaggyAu
相关产品推荐
相关产品推荐

