C#中的字符串格式

本文关键字:格式 字符串 | 更新日期: 2023-09-27 18:28:29

我知道我要问的问题很傻。所以它开始了。我有一个C#代码,其中有一个字符串,如下所示:

string.Format(
    "{0}'"icon'":'"{2}'",'"alert'":'"{3}'",'"governanceType'":'"{4}'"{1}", 
    "{", 
    "}",    
    "notificationicon", 
    governanceName, 
    tips.GovernanceType)

有人能解释一下上面的代码是什么意思吗。

C#中的字符串格式

String.Format将字符串中的标记替换为表示后续参数从零开始的索引的值。

为清晰起见,添加了注释:

string.Format(
    "{0}'"icon'":'"{2}'",'"alert'":'"{3}'",'"governanceType'":'"{4}'"{1}", 
    "{",                // {0}
    "}",                // {1}
    "notificationicon", // {2}
    governanceName,     // {3}
    tips.GovernanceType)// {4}

但是,大括号值可能只是为了避免出现错误。一个更清晰的解决方案是逃离它们:

string.Format(
    "{{'"icon'":'"{0}'",'"alert'":'"{1}'",'"governanceType'":'"{2}'"}}", 
    "notificationicon", // {0}
    governanceName,     // {1}
    tips.GovernanceType)// {2}

格式允许使用{}中的参数而不是串联("+var+")来构建字符串。Fromat比串联更容易阅读。在你的案例中有4个论点:

{0} = "{"
{1} = "}"
{2} = "notificationicon"
{3} = value of governanceName
{4} = value of tips.GovernanceType

最后,参数{}将被值替换,您将获得新的格式化字符串

如注释中所述,第一个参数是要格式化的字符串,所有后续参数都将插入占位符的位置,用格式字符串中的{x}表示(其中x是索引整数)。格式字符串中常见的'转义字符,它们阻止内联"-字符结束字符串(而是按字面打印)。

为了使其更易于阅读和理解,我将"字符替换为'字符。命令可以这样简化:

string.Format("{{'icon':'notificationicon','alert':'{0}','governanceType':'{1}'}}", 
                governanceName, tips.GovernanceType);

当我将.Replace('''',''"')添加到其中时,它会生成以下字符串(假设governanceName="SomeGovernanceName",tips.GoverernanceType="Some GovernanceType"):

{"icon":"notificationicon","alert":"SomeGovernanceName","governanceType":"SomeGovernanceType"}