C# 如何用另一个值替换=符号后的子字符串?
我有一个文本文件如下 设置aaadb=测试 设置aaadbo=dummyvalue1 设置aaacdo=dummyvalue2 等等 我有密钥和值对的列表 如下 关键值 aaadb-MyTesting aaadbo MyTesting1 aaacdo MyTesting3 等等 现在我想输出如下 设置aaadb=MyTesting 设置aaadbo=MyTesting1 设置aaacdo=MyTesting3 有人能帮助我如何使用正则表达式实现这一点吗?工作示例:C# 如何用另一个值替换=符号后的子字符串?,c#,regex,C#,Regex,我有一个文本文件如下 设置aaadb=测试 设置aaadbo=dummyvalue1 设置aaacdo=dummyvalue2 等等 我有密钥和值对的列表 如下 关键值 aaadb-MyTesting aaadbo MyTesting1 aaacdo MyTesting3 等等 现在我想输出如下 设置aaadb=MyTesting 设置aaadbo=MyTesting1 设置aaacdo=MyTesting3 有人能帮助我如何使用正则表达式实现这一点吗?工作示例: static void Mai
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();
}
static void Main(字符串[]args)
{
List textFile=new List(){“set aaadb=test”、“set aaadbo=dummyvalue1”、“set aaacdo=dummyvalue2”};
Dictionary keyValues=新字典();
添加(“aaadb”、“MyTesting”);
添加(“aaadbo”、“MyTesting1”);
添加(“aaacdo”、“MyTesting3”);
列表结果=新列表();
foreach(文本文件中设置的变量)
{
var splits=set.Split('=');
splits[1]=keyValues。其中(k=>k.Key==splits[0]。Split(“”)[1])。选择(k=>k.Value)。FirstOrDefault();
Add(string.Join(“=”,splits));
}
Console.ReadLine();
}
如果你有键值对列表,比如字典
var source = new Dictionary<string, string>() {
{"aaadb", "MyTesting"},
{"aaadbo", "MyTesting1"},
{"aaacdo", "MyTesting3"},
};
结果:
aaadb=MyTesting
aaadbo=MyTesting1
aaacdo=MyTesting3
如果要将文件解析回键/值对,可以将正则表达式放在那里:
var result=File
.ReadLines(@“c:\MyFile.txt”)
.Select(line=>Regex.Match(
行,,
@“^\s*集\s+(?[A-Za-z0-9]+)\s*=\s*(?*)”)
.Where(匹配=>match.Success)
.选择(匹配=>new KeyValuePair(
匹配。组[“键”]。值,
匹配。组[“值”]。值)
.ToArray();//让我们把对作为一个数组
不需要正则表达式,只需在=
上拆分并替换相应的值。您所说的键值列表是什么意思?这是一本列表词典吗?请输入您尝试的代码。
aaadb=MyTesting
aaadbo=MyTesting1
aaacdo=MyTesting3
var result = File
.ReadLines(@"c:\MyFile.txt")
.Select(line => Regex.Match(
line,
@"^\s*set\s+(?<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