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)
| 归档时间: |
|
| 查看次数: |
13024 次 |
| 最近记录: |