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的主要内容,如果未能解决你的问题,请参考以下文章

如何在 .NET 中使用自定义格式对 TimeSpan 对象进行 String.Format ?

C#中string.Format 用法详解

C# string.format用法详解

C#中string.format用法详解 [转载]

C#中string.format用法详解

C#中String.Format()方法的使用