字符串格式

目录

字符串插值

 FormattableString

给字符串插值使用其他区域值

 转义花括号

日期时间和数字的格式

自定义字符串格式


字符串插值

C# 6引入了给字符串使用$前缀的字符串插值。下面的示例使用$前缀创建了字符串s2,这个前缀允许在花括号中包含占位符来引用代码的结果。{s1}是字符串的一个占位符,编译器将变量s1的值放在字符串s2中:

            string s1 = "World";
            string s2 = $"Hello, {s1}";

 在现实中,这只是语法糖。对于带$前缀的字符串,编译器创建String.Format方法的调用。所以前面的代码段解读为:

   string s1 = "World";
   string s2 = String.Format("Hello, {0}",s1);

 String.Format方法的第一个参数接受一个格式字符串,其中的占位符从0开始编号,其后是放入字符空白处的参数。

新的字符串格式要方便的多,不需要编写那么多的代码。

不仅可以使用变量来填写字符串的空白处,还可以使用返回一个值的任何方法:

   string s2 = $"Hello, {s1.ToUpper()}";

这段代码可解读为如下类似的语句:

   string s2 = String.Format("Hello, {0}",s1.ToUpper());

 字符串还可以有多个空白处,如下所示的代码:

string s3 = $"The result of {x} + {y} is {x + y}";

 解读为:

string s3 = String.Format("THe reuslt of {0} and {1} is {2}", x, y, x + y);

 FormattableString

把字符串赋予FormattableString,就很容易得到翻译过来的插值字符串。插值字符串可以直接分配,因为FormattableString比正常的字符串更适合匹配。这个类型定义了Format属性(返回得到的格式字符串)、ArgumentCount属性和方法GetArgument(返回值):

   int x = 3, y = 4;
   FormattableString s = $"The result of {x} + {y} is {x + y}";
   System.Console.WriteLine($"format: {s.Format}");
   for (int i = 0; i < s.ArgumentCount; i++)
   {
       System.Console.WriteLine($"argument {i}: {s.GetArgument(i)}");
   }

运行此代码段,输出结果如下:

format: The result of {0} + {1} is {2}
argument 0: 3
argument 1: 4
argument 2: 7

给字符串插值使用其他区域值

插值字符串默认使用当前

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值