C# C如何替换字符串中的变量
我从数据库中得到了字符串 包含一些变量的字符串。 我知道string.format或$要替换, 但这不能解决问题 我想要得到的结果是C# C如何替换字符串中的变量,c#,string.format,C#,String.format,我从数据库中得到了字符串 包含一些变量的字符串。 我知道string.format或$要替换, 但这不能解决问题 我想要得到的结果是 string name = "name1"; string country = "country1"; string greet = "Hi {name}, Are you from {country}"; 我怎样才能得到这个呢?你可以这样做: string result = $"Hi {name}, Are you from {country}"; 或者如果
string name = "name1";
string country = "country1";
string greet = "Hi {name}, Are you from {country}";
我怎样才能得到这个呢?你可以这样做:
string result = $"Hi {name}, Are you from {country}";
或者如果要使用字符串。替换:
如果您想使用$:
如果只想替换多个变量,可以按列表进行迭代:
var name = "name1";
var country = "country1";
var result = $"Hi {name}, Are you from {country}";
您可以尝试使用正则表达式替换所有{…}:
为什么不把result=greet.Replace{name},name;?我从数据库中得到的字符串,我不知道有多少变量可以让你也从数据库中得到问候语?我引用了我知道string.format的问题。。。但那不行solve@bradbury9他声称他知道string.format,但你在他的问题中看到了任何正确的实现吗?字符串中的变量没有顺序,我找不到index@ThelemePan您需要有替换字符串的逻辑;否则,根据您要替换字符串的内容?我认为OP是从数据库中获取格式字符串,因此您不能使用string.format使用字典比使用元组列表更好。Dictorial添加项比使用列表更复杂。如果不必搜索关键字列表,则性能会更好;应该是greet=greet.Replace。。。
string name = "name1";
string country = "country1";
string result = greet.Replace("{name}",name).Replace("{country}",country);
var name = "name1";
var country = "country1";
var result = $"Hi {name}, Are you from {country}";
string greet = "Hi {name}, Are you from {country}";
var placeholders = new List<(string placeholder, string value)>()
{
("name", "name1"),
("country1", "country1")
};
foreach (var ph in placeholders)
greet = greet.Replace($"{{{ph.placeholder}}}", ph.value);
using System.Text.RegularExpressions;
...
// All possible substitutions (from database?)
Dictionary<string, string> replacements =
new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase) {
{ "name", "name1"},
{ "country", "country1"},
};
string greet = "Hi {name}, Are you from {country}";
string result = Regex.Replace(
greet,
@"(?<=\{).*?(?=\})",
match => replacements.TryGetValue(match.Value, out var value) ? value : "???");