C# String.Format 等价于带有自定义格式化程序的 JS
Posted
技术标签:
【中文标题】C# String.Format 等价于带有自定义格式化程序的 JS【英文标题】:C# String.Format equivalent is JS with customize formatter 【发布时间】:2021-12-04 17:12:49 【问题描述】:关于这个问题有不同的问题,但它们都涵盖了 C# 原生 String.Format 方法,该方法涵盖了这样的情况,仅替换索引:
"0, 1!', 'Hello', 'world"
在 .Net 中,我可以实现 IFormatProvider, ICustomFormatter
并将其提供给
String Format(IFormatProvider provider, String format, params object[] args);
然后格式化字符串,如:
"0:u 0:l"
在格式化程序实现中,我可以访问格式(在示例中为“u”或“l”)并通过切换格式来相应地格式化字符串。如何用 JS 实现这一点
C# 示例:
public class CustomFormatter : IFormatProvider, ICustomFormatter
public string Format(string format, object arg, IFormatProvider formatProvider)
switch (format)
case "u":
return (arg).ToUpperCase();
case "l":
return (arg).ToLowerCase();
string.Format(new CustomFormatter(),"0:u 1:l","hello","WORLD")
//OUTPUT: "HELLO world"
【问题讨论】:
这能回答你的问题吗? javascript equivalent to printf/String.Format 不,它涵盖了“0,1!','Hello','world”这样的例子 【参考方案1】:Javascript 中不存在这样的东西,但是您可以使用外部库来实现类似的结果。例如使用包string-format 你可以这样做:
const fmt = format.create (
lower: s => s.toLowerCase(),
upper: s => s.toUpperCase(),
)
fmt ('!upper !lower!', "hello","WORLD")
// 'HELLO world'
【讨论】:
以上是关于C# String.Format 等价于带有自定义格式化程序的 JS的主要内容,如果未能解决你的问题,请参考以下文章