-6

你好,所以我有一个看起来像的文本文件

45353
b
4353
b
54
54
b
5345
53453

和看起来像的数组列表

A
B
A

我如何替换字符串 b->A b -> b -> A ?

输出应该看起来像

45353
A
4353
B
54
54
A
5345
53453
4

4 回答 4

3
string content = File.ReadAllText("data.txt");
var replacements = new[] { "A", "B", "A" };

int index = 0;
string result = Regex.Replace(content, @"[a-zA-Z]+",
                              m => replacements.Length > index ? 
                                   replacements[index++] : m.Value);

这将对MatchEvaluator每个找到的单词执行,并将其替换为replacements数组中适当位置的值。

于 2013-07-19T13:13:06.437 回答
1

您可以使用Regex.Replace(String, String, Int32)它,执行直到替换所有预期arr的替换。

var text = File.ReadAllText("file.txt");
var arr = new[] { "A", "B", "A" };
var regex = new Regex("b");
for(int i = 0; i < arr.Count; i++)
    text = regex.Replace(text, arr[i].ToString(), 1);

提示:不要在疲倦时回答...

于 2013-07-19T13:16:40.797 回答
0

将第二个文件读入字符串数组

保持计数器初始化为 0

从第一个文件中读取,每次您的数据符合替换条件时,将其替换为计数器处的值并增加计数器

于 2013-07-19T13:08:49.887 回答
0
StreamReader sr = new StreamReader("file.txt");
int counter = 0;
List<string> arrayFromFile = new List<string>();
while(string line = sr.ReadLine())
{
   if(line=='b')
   {
      line = abaArray[counter];
      counter++;
      if(counter>=abaArray.Length)
      {
         counter=0;
      }
   }
   arrayFromFile.Add(line)
}
//Write back to the file
于 2013-07-19T13:11:28.420 回答