Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用正则表达式保留原始行和扩展行_C#_Regex_C# 4.0 - Fatal编程技术网

C# 如何使用正则表达式保留原始行和扩展行

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

我正在学习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
+="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开始,不从
开始。