如何用另一个值替换=符号的子字符串



我的文本文件如下

设置AAADB = test

设置aaadbo = dummyvalue1

设置aaacdo = dummyvalue2

等等...

我有密钥和价值对的列表如下

钥匙值

aaadb mytesting

aaadbo mytesting1

aaacdo mytesting3

等等...

现在我想像以下

那样输出

设置aaadb = mytesting

设置aaadbo = mytesting1

设置aaacdo = mytesting3

有人可以帮助我如何使用正则表达式?

如果您有键值对列表,则为字典

  var source = new Dictionary<string, string>() {
    {"aaadb", "MyTesting"},
    {"aaadbo", "MyTesting1"},
    {"aaacdo", "MyTesting3"},
  };

您可以在 linq 的帮助下轻松地以所需的格式输出(这里没有正则表达式(:

  string report = String.Join(Environment.NewLine, source
    .Select(pair => $"{pair.Key}={pair.Value}"));
  // Or File.WriteAllText(@"C:MyFile.txt", report); // if you want to save in the file
  Console.WriteLine(report);

结果:

aaadb=MyTesting
aaadbo=MyTesting1
aaacdo=MyTesting3

在您中, parse file back 键/值对您可以放置正则表达式

  var result = File
    .ReadLines(@"c:MyFile.txt") 
    .Select(line => Regex.Match(
         line, 
       @"^s*sets+(?<key>[A-Za-z0-9]+)s*=s*(?<value>.*)$"))
    .Where(match => match.Success)
    .Select(match => new KeyValuePair<string, string>(
                            match.Groups["key"].Value, 
                            match.Groups["value"].Value))
    .ToArray(); // Let's get pairs as an array

工作样本:

static void Main(string[] args)
{
    List<string> textFile = new List<string>() { "set aaadb=test", "set aaadbo=dummyvalue1", "set aaacdo=dummyvalue2" };
    Dictionary<string, string> keyValues = new Dictionary<string, string>();
    keyValues.Add("aaadb", "MyTesting");
    keyValues.Add("aaadbo", "MyTesting1");
    keyValues.Add("aaacdo", "MyTesting3");
    List<string> result = new List<string>();

    foreach (var set in textFile)
    {
        var splits = set.Split('=');
        splits[1] = keyValues.Where(k => k.Key == splits[0].Split(' ')[1]).Select(k => k.Value).FirstOrDefault();
        result.Add(string.Join("=", splits));
    }
    Console.ReadLine();
}

最新更新