gpt4 book ai didi

c# - 根据数组元素替换字符串

转载 作者:太空宇宙 更新时间:2023-11-03 18:30:50 25 4
gpt4 key购买 nike

我有一个包含一些值和一些参数字符串的数组。我将两者都放在了下面。我想根据数组元素替换参数字符串。请帮我做这件事。

string[] arrayval = {"Type:1","Action:doit","Message:hai"};

string Param = "Type:[Type]#Action:[Action]#Message:[Message]#OutMsg:[OutMsg]#@RetVal:[RetVal]";

My Expected Output


string Param = "Type:1#Action:doit#Message:hai#OutMsg:[OutMsg]#@RetVal:[RetVal]";

最佳答案

未测试,应添加一些检查,但请参阅@Ulugbek Umirov 的版本:)

var pattern = @"\[(.*?)\]";
var matches = Regex.Matches(Param, pattern);

foreach (Match m in matches) {
var inb = "[" + m.Groups[1] + "]";
var results = arrayval.Select (s => s.Split(':'))
.FindAll(ss => ss[0] == m.Groups[1])
.Select (ss => ss[1]);
Param = Param.Replace(inb, results[0]);
}

顺便说一句... @Ulugbek Umirov 的一个更短的版本应该可以正常工作:)

Param = Regex.Replace(Param, @"\[(.+?)\]", m =>
arrayval.Select(s => s.Split(new[] { ':' }, 2))
.Where (p => p.Length == 2)
.Where (p => p[0] == m.Groups[1].Value)
.Select(p => p[1])
.FirstOrDefault() ?? m.Value);

如果不存在则替换为 0 的更新:

Param = Regex.Replace(Param, @"\[(.+?)\]", m =>
arrayval.Select(s => s.Split(new[] { ':' }, 2))
.Where (p => p.Length == 2)
.Where (p => p[0] == m.Groups[1].Value)
.Select(p => p[1])
.FirstOrDefault() ?? "0");

关于c# - 根据数组元素替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22704162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com