【c#冷知识系列】(三)关于字符串的冷知识

<节>

 <代码类=" hljs bash "> string 小姐;=,
string 小姐:=,@;

输出:
sss

 <代码类=癶ljs cs”>, j =,,,, 

这里不仅要知道可以这么用,更要知道为什么可以这么用:模板字符串或者叫插值字符串只是字符串。Format的一个语法糖,编译器会这样解析:

 s1 = ;
 s2 = .Format(, s1);

注意:

 s1 = ;
Console.WriteLine();  
Console.WriteLine(}}"); 

返回值一定是一个新的字符串,因为String类没有提供任何可以改变其内容的方法


 i = ;
 j = i.Insert(, );

输出:

j hello123

我们都知道在进行复杂的字符串操作的时候就要用到StringBuilder类,我们不太注意到的是:

  1. StringBuilder工作方式高效但是功能受限,它只能完成文本中的 替换 追加 删除的工作。
    下面是StringBuilder提供的主要方法:
    【C#冷知识系列】(三)关于字符串的冷知识



StringBuilder sb =  StringBuilder();

StringBuilder sb1 =  StringBuilder();

StringBuilder sb2 =  StringBuilder(, );

  1. 格式化的语法

    在模板字符串中要用冒号分割变量与格式化字符串

 time = DateTime.Now;
Console.WriteLine(");   
Console.WriteLine(time.ToString()); 
  1. 内置的格式化

    格式字符串结果n2,440.012 有逗号分隔,有小数点e2.44e+003 指数表示法x9ad 十六进制c$2,440.002 货币






















    关于内置的格式化,如果大量经常使用的话,推荐点击这里下载微软提供的工具来帮助格式化。

  2. 自定义格式化

    除了使用内置的格式化,我们还能自定义格式化字符串和格式化的结果,方法就是实现IFormattable接口,下面举个例子

定义:

   : 
{
      FirstName { ; ; }
      LastName { ; ; }

       ()
    {
         FirstName +  + LastName;
    }
      ( format) => ToString(format, ); 
      ( format, IFormatProvider formatProvider)
    {
         (format)
        {
             :
                 ToString();
             :
                 FirstName;
             :
                 LastName;
            :
                  FormatException(");
        }
    }
}

使用:

Student stu =  Student { FirstName = , LastName =  };
Console.WriteLine(stu.ToString());   


【c#冷知识系列】(三)关于字符串的冷知识