C#中的字符串-string与StringBuilder

字符串

stringSystem.String的一个别名。
需要注意的是,string创建的字符串实际上是一个不可变的数据类型。一旦对字符串对象进行了初始化,该字符串就不能再改变内容了。
对于:

string s = "www";
s = s + ".baidu.com";

实际上是创建了一个新的字符串,把就字符串的内容复制到了新的字符串中,然后将新字符串的引用赋值给了该字符串对象。
原先的旧字符串因为没有引用,会被GC回收。

常用方法

  • CompareTo() :比较两个字符串的内容是否相等。
  • Replace():用另一个字符或者字符串替换字符串中给定的字符或字符串。
  • Split():在出现给定字符的地方,把字符串拆分成一个字符串数组。
  • SubString():在字符串中检索给定位置的子字符串。
  • ToLower():把字符串转换成小写形式。
  • ToUpper():把字符串转换成大写形式。
  • Trim():删除首尾的空白。
  • Concat():合并字符串。
  • CopyTo():把字符串中指定的字符复制到一个。
  • Format():格式化字符串。
  • IndexOf():获得字符串第一次出现某个给定字符串或者字符的位置。
  • IndexOfAny():返回定义的数组中任何一个字符最早出现的下标位置。
  • Insert():把一个字符串实例插入到另一个字符串实例的指定索引处。
  • Join():合并字符串数组,创建一个新字符串。
    具体使用方法和参数略。

StringBuilder

首先,StringBuilder所在的命名空间为:System.Text

  • 初始化的方式:
//利用构造函数创建StringBuilder
StringBuilder sb = new StringBuilder("www.baidu.com");

//初始一个空的StringBuilder对象,占有20个字符大小的空间
StringBuilder sb = new StringBuilder(20);

//初始化字符串并占有100个字符大小的空间
StringBuilder sb = new StringBuilder("www.baidu.com", 100);
  • 添加新的字符串:(Append()方法
StringBuilder sb = new StringBuilder("www.baidu.com", 100);
sb.Append("/xxx.html");

//利用string实现
string s = "www.baidu.com";
s = s + "/xxx.html";

虽然二者的结果一样,但是当我们需要对一个字符串进行频繁的删除和添加操作时,使用StringBuilder的效率会更高。

对于StringBuilder,当容量不够时,会重新申请一个容量为原来的二倍的空间,然后将原来的内容复制过来并添加新的内容,原先旧的空间将会释放。在定义StringBuilder时,不进行容量的定义也是可以的。

StringBuilder的其他方法

  • Insert()
    追加特定格式的字符串。
StringBuilder sb = new StringBuilder("www.baidu.com");
sb.Insert(0, "http://");    //0表示插入的索引(位置)

输出为:
http://www.baidu.com
  • Remove()
    从当前字符串中删除字符。
StringBuilder sb = new StringBuilder("www.baidu.com");
sb.Remove(0,3);     //第一个参数为移除的初始索引,第二个参数为移除的字符的长度

输出为:
baidu.com
  • Replace()
    在当前字符串中,用某个字符串或者字符全部替换为另一个字符串或者字符。
StringBuilder sb = new StringBuilder("www.baidu.com");
sb.Replace(".","");     //字符串替换字符串

输出为:
wwwbaiducom

StringBuilder sb = new StringBuilder("www.baidu.com");
sb.Replace('w','e');    //字符替换字符

输出为:
eee.baidu.com
  • ToString()
    将当前StringBuilder中存储的字符串,提取成一个不可变的字符串。

猜你喜欢

转载自blog.csdn.net/lym940928/article/details/80076019
今日推荐