gpt4 book ai didi

c# - 替换字符串中的占位符

转载 作者:行者123 更新时间:2023-12-02 20:02:36 24 4
gpt4 key购买 nike

我有如下字符串:

Insert into Emp(Id,Name,Number,Address) values({Id},"Abc",{Number},{Address});

在上面的字符串 {Id} 中,{Number}{Address} 是我想用一些值替换的占位符。

我想要字符串中的占位符列表,并且我想轻松地将其替换为实际值。

输出应该是这样的:

Insert into Emp(Id,Name,Number,Address) values(123,'Abc',55668878,'test address');

最佳答案

如果您在变量中收到字符串,您应该自己进行插值

为此,您需要找到所有占位符并替换它们的值。您可以使用正则表达式执行此操作(如果占位符可以以数字开头,则可以简化)

{(?<placeholder>[a-z_][a-z0-9_]*?)}

下一个方法将执行此替换:

public static string Replace(string input, Dictionary<string, object> replacement)
{
var regex = new Regex("{(?<placeholder>[a-z_][a-z0-9_]*?)}",
RegexOptions.Compiled | RegexOptions.IgnoreCase);

return regex.Replace(input, m =>
{
var key = m.Groups["placeholder"].Value;
if (replacement.TryGetValue(key, out var value))
return value.ToString();

throw new Exception($"Unknown key {key}");
});
}

用法:

var input = "Insert into Emp(Id,Name,Number,Address) values({Id},\"Abc\",{Number},{Address});";
var replaces = new Dictionary<string, object>
{
{"Id", 123},
{ "Number", 55668878},
{"Address", "\"test address\"" },
};

var result = Replace(input, replaces);
Console.WriteLine(result);

输出:

Insert into Emp(Id,Name,Number,Address) values(123,"Abc",55668878,"test address");

关于c# - 替换字符串中的占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55473640/

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