string name = "name1";
string country = "country1";
string greet = "Hi {name}, Are you from {country}";
Run Code Online (Sandbox Code Playgroud)
我从数据库字符串中获取了带有一些变量的字符串。我知道string.format()
或者$""
更换,但这解决不了。
我想要得到的结果就像
string result = $"Hi {name}, Are you from {country}";
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到这个?
你可以这样做:
string name = "name1";
string country = "country1";
string result = String.Format("Hi {0}, Are you from {1}",name, country);
Run Code Online (Sandbox Code Playgroud)
或者如果你想使用String.Replace
:
string name = "name1";
string country = "country1";
string result = greet.Replace("{name}",name).Replace("{country}",country);
Run Code Online (Sandbox Code Playgroud)
如果你想使用$
:
var name = "name1";
var country = "country1";
var result = $"Hi {name}, Are you from {country}";
Run Code Online (Sandbox Code Playgroud)
您可以在正则表达式的帮助下尝试Replace
所有操作:{...}
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 : "???");
Run Code Online (Sandbox Code Playgroud)
编辑:如果你想删除{
..,}
你可以稍微修改一下正则表达式:
string result = Regex.Replace(
greet,
@"\{(?<name>.*?)\}",
match => replacements.TryGetValue(match.Groups["name"].Value, out var value) ? value : "???");
Run Code Online (Sandbox Code Playgroud)