C#字符串操作(一)

时间:2021-05-05 16:13:25

C#内置类型中,字符串是唯一的引用类型,具有不可变性和密封性。

不可变性指字符串一旦创建成功,将不可更改,str1=str1,实际上在堆新创建了一个str1字符串对象,并且返回对该对象的引用。

密封性指字符串不能被继承。

不可变性和密封性能保证字符串类型更加高效和安全。

字符串操作

1、格式化字符串

String.Format

  string str1 = "puguo  2530";
  string strFormat = "{0,20}";//字符串格式化占20字符
  string strResult=string.Format(strFormat,str1);
  Console.WriteLine("string.Format({0},{1})=[{2}]\n",strFormat,str1,strResult);
标准数字格式化字符串 含义 实例
C或c 货币 string.Format("{0:C}",10)=¥10.00
D或d 补位 string.Format("{0:D3},10")=010
E或e 指数 string.Format("{0:E3},10")=1.000e+001
F或f 固定点 string.Format("{0:F3},10")=10.000
G或g 常规 string.Format("{0:G3},10")=10
N或n 千分符 string.Format("{0:N},10000")=10,000.00
P或p 百分号 string.Format("{0:P},1")=100%
X或x 十六制 string.Format("{0:X}",1900)=96C

 

自定义数字格式化字符串 含义
0 0占位符
# 数字占位符
. 小数点
千位分隔符
段分割符
% 百分符

 

2、比较字符串

(1)、string.Compare(str1,str2)

    str1<str2   --->-1

    str1==str2 --->0

    str1>str2   --->1

(2)、string.CompareOrdinal(str1,str2); 与(1)区别,与本地化无关

    str1<str2   --->-1

    str1==str2 --->0

    str1>str2   --->1

(3)、str1.CompareTo(str2);

    str1<str2   --->-1

    str1==str2 --->0

    str1>str2   --->1

    str2 is null  --->1    ""比null大

(4)、string.Equals(str1, str2)  <==> str1==str2

    str1==str2 --->0

    str1!=str2 --->!0

(5)、 str1.Equals(str2) 

    str1==str2 --->0

    str1!=str2 --->!0

(6)、str1==str2

总结:静态方法比实例方法效率高,因为静态方法比实例方法先加载。总的来说,(1)(2)比(3)好,(4)比(5)好

3、字符串连接

    (1)、str1+str2

    (2)、string.Concat(str1,str2)

4、复制字符串

   (1)、str2=string.Copy(str1); 

         copy创建一个新的实例字符串对象,str2,str1不是指向同一字符串引用。

   (2)、str2=str1

         直接复制,str2与str1指向同一字符串引用。字符串的不可变性导致字符串引用的指不可变,改变字符串的指知识改变字符串指向的字符串引用。

   (3)、str2=(string)str1.clone()

         str1.clone()返回的是object类型,强制转化为string,与(2)效果一致。