zoukankan      html  css  js  c++  java
  • 字符串

    一、字符串基础
    1、基础而不常用的方法
    1>Join:合并字符串数组,创建 一个新的字符串
    2>PadLeft:在字符串的左侧,通过添加指定的重复字字符填充字符串
    3>PadRight:在字符串的右侧,通过添加指定的重复字字符填充字符串
    4>Compare:比较字符串的内容,考虑区域值背景
    5>CompareOrdinal:比较字符串的内容,不考虑区域值背景
    2、字符串的创建
    1、 首先要注意的是利用String类修改字符串时,不是在原来字符串符基础上修改,而是生成新的字符串引用,当频繁修改字符串文字时,性能就会出问题
    所以产生了一个StringBuilder类
    2、StringBuilder类仅限于处理字符串的替换、追加、删除功能
    初始化StringBuilder类时,可以指定包含字符串的实际长度的属性Length,也可以指定字符串在内存中分配的最大值的属性Capital,既可以显示指定也可以隐式指定,隐式指定在构造函数中指定,显示指定调用属性赋值
    3、Append()意为追加,有不同的追加,需要时自行参考
    4、Replace()意为替换,跟String类一样的功能,但是在过程中不需要复制字符串
    5、StringBuilder类无法强制转化成String类,当需要转化时,调用toString()转化
    二、字符串格式
    1、字符串插值$,允许在字符串花括号中包含占位符来应用代码的结果
    2、$代表的最终会被编译成String类的Format方法执行
    3、FormatableString类用来获取翻译插值字符串,Format属性返回得到的格式字符串,GetArgument得到指定的值
    4、区域值:用来指定不同的区域有不同显示的一种方式,用来指定区域值需要传递IformatPovider的toString方法,此接口在字符换类中由CultureInfo类实现举例说明
    private string Invariant(FormattableString s)=>s.ToString(CultureInfo.InvariantCulture);
    直接使用FormattableString.Invariant($"day:d")
    5、插值的转义花括号多家一个花括号就可以了
    6、自定义字符串格式,只需要继承IFormattable 即可举例说明:
    public class Person : IFormattable
    {
    public string FirstName { get; }
    public string LastName { get; }

        public Person(string firstName, string lastName)
        {
            FirstName = firstName;
            LastName = lastName;
        }
        public override string ToString()=> FirstName +""+ LastName ;
    
        public virtual string ToString(string format) => ToString(format, CultureInfo.CurrentCulture);
    
    
        public string ToString(string format, IFormatProvider formatProvider)
        {
            if (formatProvider == null) 
            {
                formatProvider = CultureInfo.CurrentCulture;
            } 
            switch (format)
            {
                case null:
                case "A":
                    return ToString();
                case "F":
                    return FirstName;
                case "L":
                    return LastName;
                default:
                    throw new FormatException($"invalid format string {format}");
            }
        }
    }
    

    当然IFormatProvider接口还可以由NumberFormatInfo类和DateTimeFormatInfo类来实现

  • 相关阅读:
    ORACLE 利用 REPLACE函数替换字段字符串
    EXCEL中对1个单元格中多个数字求和
    Oracle插入日期格式出现 ORA-01843: not a valid month的解决办法
    深入浅出设计模式——装饰模式(Decorator Pattern)
    深入浅出设计模式——组合模式(Composite Pattern)
    深入浅出设计模式——桥接模式(Bridge Pattern)
    深入浅出设计模式——适配器模式(Adapter Pattern)
    深入浅出设计模式——单例模式(Singleton Pattern)
    深入浅出设计模式——原型模式(Prototype Pattern)
    深入浅出设计模式——建造者模式(Builder Pattern)
  • 原文地址:https://www.cnblogs.com/heyangming/p/12108616.html
Copyright © 2011-2022 走看看