string.Format() 的“bla {0} bla”语法非常好用。但有时我不想枚举占位符,而是想按顺序在占位符中映射变量。是否有一个库可以做到这一点?
例如,我想要这样的效果:
string.Format("string1={0}, string2={1}", v1, v2)
这里是一些关于IT技术的内容:
string.Format("string1={*}, string2={*}", v1, v2)
var name = "ozzy";
var x = string.Format("Hello {0}", name);
var y = $"Hello {name}";
等同于同一件事。
请参见https://msdn.microsoft.com/zh-cn/magazine/dn879355.aspx。
另外,您经常需要执行多行字符串,因此只需:
var sql = $@"
SELECT
name, age, gender
FROM Users
WHERE UserId = '{userId}'
ORDER BY age asc";
Regex.Replace
。 警告:不支持转义{*},当超出范围或未提供足够的参数时也没有好的错误信息!public static class ExtensionMethods
{
private static Regex regexFormatSeq = new Regex(@"{\*}", RegexOptions.Compiled);
public static string FormatSeq(this string format, params object[] args)
{
int i = 0;
return regexFormatSeq.Replace(format, match => args[i++].ToString());
}
}
编辑:我有点无聊,这段代码有些松散且容易出错,但是将此类放入您的项目中并在必要时使用其命名空间:
public static class StringExtensions
{
public static string FormatEx(this string s, params string[] parameters)
{
Regex r = new Regex(Regex.Escape("{*}"));
for (int i = 0; i < parameters.Length; i++)
{
s = r.Replace(s, parameters[i], 1);
}
return s;
}
}
使用方法:
Console.WriteLine("great new {*} function {*}".FormatEx("one", "two"));
Console.WriteLine("string1=" + var1 + " string2=" + var2);
Environment.NewLine
的实例。我完全可以看到在某些情况下这可能是可行的选择,甚至是理想的选择。 - Adam Robinson