美文网首页
C# 字符串操作知识点汇总

C# 字符串操作知识点汇总

作者: wwmin_ | 来源:发表于2020-06-11 11:41 被阅读0次

    String.Format 方法的几种定义:

    String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项。
    String.Format (String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的文本等效项。
    String.Format (IFormatProvider, String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的文本等效项。指定的参数提供区域性特定的格式设置信息。
    String.Format (String, Object, Object) 将指定的 String 中的格式项替换为两个指定的 Object 实例的值的文本等效项。
    String.Format (String, Object, Object, Object) 将指定的 String 中的格式项替换为三个指定的 Object 实例的值的文本等效项。

    /// <summary>
    /// 字符串操作知识点汇总
    /// </summary>
    public class CommonStringTools
    {
        public void RunTest()
        {
            //逐字字符串:转义符
            var fileName = @"c:\temp\newfile.txt";
            Console.WriteLine(fileName);
    
            //逐字字符串:多行文本
            var multiLine = @"This is a
    multiline paragraph.";
            Console.WriteLine(multiLine);
    
            // 非逐字字符串
            var escapedFileName = "c:\temp\newfile.txt";
            Console.WriteLine(escapedFileName);
    
            //逐字字符串中唯一不被原样解释的字符是双引号。由于双引号是定义字符串的关键字,所以在逐字字符串中要表达双引号需要双引号进行转移。
            var str = @"""I don't think so"",he said.";
            Console.WriteLine(str);
    
            //在逐字字符串中也可以 $ 符号实现字符串内插值
            Console.WriteLine($@"Testing \n 1 2 {5 - 2}");
    
            //数字格式化方法为:
            //string.Format("{index[:format]}", number);
            //“#”描述:占位符,如果可能,填充位
            Console.WriteLine(string.Format("{0:######}", 1234));//=>1234
            Console.WriteLine(string.Format("{0:000000}", 1234));//=>001234
            Console.WriteLine(string.Format("{0:#0####}", 1234));//=>01234
            Console.WriteLine(string.Format("{0:0#0####}", 1234));//=>0001234
    
            //“."描述:小数点
            Console.WriteLine(string.Format("{0:000.000}", 1234));//=>1234.000
            Console.WriteLine(string.Format("{0:000.000}", 4321.12543));//=>4321.125
    
            //“,”描述:千分表示
            Console.WriteLine(string.Format("{0:0,0}", 1234567));//=>1,234,567
    
            //“%”描述:格式化为百分数
            Console.WriteLine(string.Format("{0:0%}", 1234));//=>123400%;
            Console.WriteLine(string.Format("{0:#%}", 1234.125));//=>123413%
            Console.WriteLine(string.Format("{0:0.00%}", 1234));//=>123400.00%
            Console.WriteLine(string.Format("{0:#.00%}", 1234.125));//=>123412.50%
    
            //内置快捷字母格式化用法
            //E-科学计数法表示
            Console.WriteLine((25000).ToString("E"));//=>2.500000E+004
    
            //C-货币表示,带有逗号分隔符,默认小数点后保留两位,四舍五入
            Console.WriteLine((2.5).ToString("C"));//=>¥2.50
    
            //D[length]-十进制数
            Console.WriteLine((25).ToString("D5"));//=>00025
    
            // F[precision]-浮点数,保留小数位数(四舍五入)
            Console.WriteLine((25).ToString("F2"));//=>2.52
    
            // G[digits]-常规,保留指定位数的有效数字,四舍五入
            Console.WriteLine((2.52).ToString("G2"));//=>2.5
    
            // N- 带有逗号分隔符,默认小数点后保留两位,四舍五入
            Console.WriteLine((2500000).ToString("N"));//=>2,500,000.00
    
            // X- 十六进制,非整形将产生格式异常
            Console.WriteLine((255).ToString("X"));//=>FF
    
            //ToString也可以自定义补零格式化
            Console.WriteLine((15).ToString("000"));//=>015
            Console.WriteLine((15).ToString("value is 0"));//=> value is 15
            Console.WriteLine((10.456).ToString("0.00"));//=>10.46
            Console.WriteLine((10.456).ToString("00"));//=>10
            Console.WriteLine((10.456).ToString("value si 0.0"));//=>10.5
    
            //转化为二进制、八进制、十六进制输出
            int number = 15;
            Console.WriteLine(Convert.ToString(number, 2));//=>1111
            Console.WriteLine(Convert.ToString(number, 8));//=>17
            Console.WriteLine(Convert.ToString(number, 16));//=>f
    
            //使用自定义格式化器
            var s = string.Format(new CustomFormat(), "-> {0:Reverse} <-", "Hello World");
            Console.WriteLine(s);//=> -> dlroW olleH <-
    
            //字符串拼接
            //将数组中的字符串拼接成一个字符串
            var parts = new[] { "Foo", "Bar", "Fizz", "Buzz" };
            var joined = string.Join(", ", parts);
            Console.WriteLine(joined);//=>Foo, Bar, Fizz, Buzz
    
            //以下四种方式都可以达到相同的字符串拼接的目的
            string first = "Hello";
            string second = "World";
            Console.WriteLine(first + " " + second);//=>Hello World
            Console.WriteLine(string.Concat(first, " ", second));//=>Hello World
            Console.WriteLine(string.Format("{0} {1}", first, second));//=>Hello World
            Console.WriteLine($"{first} {second}");//=>Hello World
    
            //字符串内插法
            var name = "World";
            Console.WriteLine($"Hello,{name}");//Hello,World
    
            //带有日期格式化
            var date = DateTime.Now;
            Console.WriteLine($"Today is {date:yyyy-MM-dd}");
    
            //补齐格式化 (padding)
            var num = 42;
            //向左补齐
            Console.WriteLine($"The num is {num,5}.");//=>The num is    42.
                                                        //向右补齐
            Console.WriteLine($"The num is {num,-5}.");//=>The num is 42   .
    
            //组合内置快捷字母格式化
            var amount = 2.5;
            Console.WriteLine($"It costs {amount:C}");//=>It costs ¥2.50
            Console.WriteLine($"The num is {num,5:f1}.");//=>The num is  42.0.
        }
    }
    
    //自定义格式化器
    public class CustomFormat : IFormatProvider, ICustomFormatter
    {
        public string Format(string format, object arg, IFormatProvider formatProvider)
        {
            if (!this.Equals(formatProvider))
            {
                return null;
            }
            if (format == "Reverse")
            {
                return string.Join("", arg.ToString().Reverse());
            }
            return arg.ToString();
        }
        public object GetFormat(Type formatType)
        {
            return formatType == typeof(ICustomFormatter) ? this : null;
        }
    }
    

    常用的几种实例
    1、字符串的数字格式

     string str1 =string.Format("{0:N1}",56789);               //result: 56,789.0
     string str2 =string.Format("{0:N2}",56789);               //result: 56,789.00
     string str3 =string.Format("{0:N3}",56789);               //result: 56,789.000
     string str8 =string.Format("{0:F1}",56789);               //result: 56789.0
     string str9 =string.Format("{0:F2}",56789);               //result: 56789.00
     string str11 =(56789 / 100.0).ToString("#.##");           //result: 567.89
     string str12 =(56789 / 100).ToString("#.##");             //result: 567
     string str = string.Format("{0:f2}", .2);                   //result: 0.20
    

    2、格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元)
    代码如下:
    string.Format("{0:C}",0.2)
    结果为:¥0.20 (英文操作系统结果:$0.20
    默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数

    代码如下:
    string.Format("{0:C1}",23.15)
    结果为:¥23.2 (截取会自动四舍五入)
    格式化多个Object实例

    代码如下:
    string.Format("市场价:{0:C},优惠价{1:C}",23.15,19.82)

    3、格式化十进制的数字(格式化成固定的位数,位数不能少于未格式化前,只支持整形)

    string.Format("{0:D3}",23) //结果为:023
    string.Format("{0:D2}",1223) //结果为:1223,(精度说明符指示结果字符串中所需的最少数字个数。)
    

    4、用分号隔开的数字,并指定小数点后的位数

    string.Format("{0:N}", 14200) //结果为:14,200.00 (默认为小数点后面两位)
    string.Format("{0:N3}", 14200.2458) //结果为:14,200.246 (自动四舍五入)
    

    5、格式化百分比

    string.Format("{0:P}", 0.24583) //结果为:24.58% (默认保留百分的两位小数)
    string.Format("{0:P1}", 0.24583) //结果为:24.6% (自动四舍五入)
    

    6、零占位符和数字占位符

    string.Format("{0:0000.00}", 12394.039) //结果为:12394.04
    string.Format("{0:0000.00}", 194.039) //结果为:0194.04
    string.Format("{0:###.##}", 12394.039) //结果为:12394.04
    string.Format("{0:####.#}", 194.039) //结果为:194
    

    7、日期格式化

    string.Format("{0:d}",System.DateTime.Now) //结果为:2009-3-20 (月份位置不是03)
    string.Format("{0:D}",System.DateTime.Now) //结果为:2009年3月20日
    string.Format("{0:f}",System.DateTime.Now) //结果为:2009年3月20日 15:37
    string.Format("{0:F}",System.DateTime.Now) //结果为:2009年3月20日 15:37:52
    string.Format("{0:g}",System.DateTime.Now) //结果为:2009-3-20 15:38
    string.Format("{0:G}",System.DateTime.Now) //结果为:2009-3-20 15:39:27
    string.Format("{0:m}",System.DateTime.Now) //结果为:3月20日
    string.Format("{0:t}",System.DateTime.Now) //结果为:15:41
    string.Format("{0:T}",System.DateTime.Now) //结果为:15:41:50
    

    更详细的说明请下面微软对此的说明或者上msdn上查询。

    相关文章

      网友评论

          本文标题:C# 字符串操作知识点汇总

          本文链接:https://www.haomeiwen.com/subject/wptbtktx.html