我有一个带有一些值的数组,并且还有一些参数字符串。我已将两个放在下面。 我想基于数组元素替换参数字符串。请帮我做。
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]";
答案 0 :(得分:3)
不是很整洁。但根据您提供的信息。以下应该有效。
string[] arrayval = { "Type:1", "Action:doit", "Message:hai" };
string Param = string.Format("Type:{0}#Action:{1}#Message:{2}", arrayval[0].Split(':')[1], arrayval[1].Split(':')[1], arrayval[2].Split(':')[1]);
<强>输出:强> 类型:1个#操作:度特#的消息:海
答案 1 :(得分:3)
未经测试且应添加一些检查,但请参阅@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]);
}
btw ... @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");
答案 2 :(得分:1)
@Heather
的略微修改版本Param = Regex.Replace(Param, @"\[(.+?)\]", m =>
{
string paramName = m.Groups[1].Value;
string paramValue = arrayval.Select(s => s.Split(new[] { ':' }, 2))
.Where(p => p.Length == 2)
.Where(p => p[0] == paramName)
.Select(p => p[1])
.FirstOrDefault();
return paramValue ?? m.Value;
});
答案 3 :(得分:0)
尝试以下代码..我已在VS 2012中测试过它
string[] arrayval = { "Type:1", "Action:doit", "Message:hai" };
string Param = "Type: " + arrayval[0].Split(Convert.ToChar(":"))[1] + "#Action: " + arrayval[1].Split(Convert.ToChar(":"))[1] + "#Message: " + arrayval[2].Split(Convert.ToChar(":"))[1];
输出: -
Type: 1#Action: doit#Message: hai