C# 如何使用正则表达式保留原始行和扩展行
我正在学习C#,我想得到一些帮助。在上的人的帮助下,我成功地使用正则表达式编辑了一个.inf文件部分,但我希望在编辑之前保留原始文本行。我已经把下面的代码和一个.INF数据的示例放在前面,如果可能的话,我希望它看起来像什么,但是只要数据在那里,我就不会太在意它的外观C# 如何使用正则表达式保留原始行和扩展行,c#,regex,c#-4.0,C#,Regex,C# 4.0,我正在学习C#,我想得到一些帮助。在上的人的帮助下,我成功地使用正则表达式编辑了一个.inf文件部分,但我希望在编辑之前保留原始文本行。我已经把下面的代码和一个.INF数据的示例放在前面,如果可能的话,我希望它看起来像什么,但是只要数据在那里,我就不会太在意它的外观 else if (!chkbxintdial.Checked) { var lines = File.ReadAllLines(txtcurrent.Text).ToList(); var regex = new Reg
else if (!chkbxintdial.Checked)
{
var lines = File.ReadAllLines(txtcurrent.Text).ToList();
var regex = new Regex(@"^[00]{2}");
var startFrom = lines.IndexOf("[Destinations]");
//Start replacing from the index of "[Destinations]"
for (int i = startFrom; i < lines.Count; i++)
{
//Assuming the ini section ends at an empty line - stop replacing
if (lines[i].Trim() == string.Empty)
break;
lines[i] = regex.Replace(lines[i], "+");
}
File.WriteAllLines(txtnewtariff.Text, lines);
后处理
[Destinations]
00="International",I,IV
+="International",I,IV
0024195="Gabon Mobiles",I,IMT
+24195="Gabon Mobiles",I,IMT
0024197="Gabon Mobiles",I,IMT
+24197="Gabon Mobiles",I,IMT
不要完全替换该行,而是添加到该行:
lines[i] += Environment.NewLine + regex.Replace(lines[i], "+");
还值得注意的是,有一些工具专门用于操作.INF文件,因此除了用于学术目的之外,实际上没有必要这样做。虽然您的解决方案(排除此小修补程序)似乎可以正常工作,但对于较大的文件来说,它不是特别有效,对于任意数据也不是特别健壮。与其完全替换该行,不如添加到该行:
lines[i] += Environment.NewLine + regex.Replace(lines[i], "+");
还值得注意的是,有一些工具专门用于操作.INF文件,因此除了用于学术目的之外,实际上没有必要这样做。虽然您的解决方案(除了这个小补丁)似乎可以工作,但它对于较大的文件不是特别有效,对于任意数据也不是特别健壮。感谢您的帮助和建议。该应用程序有一个特殊的用途,需要简单,因为我知道,即使是宏也可以。问题是,这是失败的,因为它正在编写[Destinations][Destinations],所以当代码循环时,它找不到新的入口有什么想法?@MatthewRingsell你的
for
循环应该从+1开始,不是从开始的。谢谢您的帮助和建议。该应用程序有一个特殊的用途,需要简单,因为我知道,即使是宏也可以。问题是,这是失败的,因为它正在编写[Destinations][Destinations],所以当代码循环时,它找不到新的入口有什么想法?@MatthewRingsell你的for
循环应该从+1开始,不从
开始。