如何用正则表达式保存原行和修改行

本文关键字:修改 保存 何用 正则表达式 | 更新日期: 2023-09-27 18:10:27

我正在学习c#,我希望得到一些帮助。在人们的帮助下,我成功地实现了使用正则表达式编辑.inf文件部分,但我想在编辑之前保留原始的文本行。我已经将代码和. inf数据的示例放在下面,如果可能的话,我希望它看起来像什么,但只要数据在那里,它看起来就不会太麻烦。

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
0024195="Gabon Mobiles",I,IMT
0024197="Gabon Mobiles",I,IMT

后过程。

[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文件的工具,因此除了出于学术目的之外,确实没有必要这样做。虽然您的解决方案(排除这个小修复)似乎可以工作,但它对于较大的文件不是特别有效,在面对任意数据时也不是特别健壮。