字符串
Posted heyangming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串相关的知识,希望对你有一定的参考价值。
一、字符串基础
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类来实现
以上是关于字符串的主要内容,如果未能解决你的问题,请参考以下文章