C#数据结构和算法-字符串、String 类和StringBuilder类

*本文为摘抄笔记*

 

Preface
当程序需要对String对象进行许多改变时会用到StringBuilder类。
因为字符串和String对象都是不可改变的,而StringBuilder对象则是易变的。
String类不可变,就意味着每次对象进行改变时都需要创建一个新的对象副本。
如果在创建长的字符串,或者是对相同对象进行许多改变,那么就应该用StringBuilder类来代替。
StringBuilder对象是可变的,性能会更好。

字符串是字符的序列,可以包含字母、数字和其他符号。C#语言中,用双引号“ Yamin Wang”可以产生文字串。

字符串可以由来自Unicode字符集的任何字符组成。
字符串也可以是没有字符而组成的,这种特殊的字符串被称为是空字符串。(“”)
表示空格的字符串是(“ ”)

字符串既是本地类型又是类的对象。可以把字符串作为本地数据值来使用。

1 创建String对象
string name=“Yamin Wang”;
C#字符串允许在其中放置转义字符。
转义字符由一个反斜杠开始(\),后面跟着单独一个表示版式的字母。

2 常用String类的方法
三个最重要的操作分别是:1)找到字符串的子串  2)确定字符串的长度 3)确定字符在字符串中的位置。

string.Length 确定字符串的长度
string.IndexOf(“ ”) 确定字符在字符串中的位置
string.Substring(开始位置,要抽出字符的数量)   找到字符串的子串

3 Split方法和Join方法
Split方法 :用于分解字符串。Split方法取到一条字符串后,就会把它分解成数据成分块,然后把这些块放入String数组内。
使用Split方法时可以指定要寻找的分隔符的内容。
该参数必须以char型数组的形式出现。数组的第一个元素将是用作分隔符的字符。
data.Split(分隔符,要存储到数组内的元素的数量)
e.g.
string[] sdata;
char[] delimiter=new char[]{','};
sdata=data.Split(delimiter,data.Length);

Join方法:从数组变为字符串。此方法取走两个参数:原始数组以及用来分隔元素的字符。
调用此方法来自String类本身而不是String的实例。
String.Join("字符",数组)

4 比较字符串的方法
Equals方法:由String对象调用,把另外一个String对象取作它的参数。逐个字符比较两个String对象。
如果相同,返回True,else return false
e.g.
s1.Equals(s2)

CompareTo方法:取一个String作为参数。会返回1,-1,0。
e.g.
s1.CompareTo(s2)

如果s1==s2 返回0
s1>s2 返回-1;
s2>s1 返回1;

Compare方法:用一个类方法来调用
String.Compare(s1,s2)

StartsWith
EndsWith:取一个字符串作为参数,若实例是以字符串参数作为开始或者结束
那么方法都会返回True

e.g.
noun.EndsWith("s")

5 处理字符串的方法
插入新字符,从字符串中移除字符,用新字符替换旧字符,改变某些字符的情况
以及向字符串添加空格或者从字符中移除空格。在String类中针对这些操作有相应的方法。

Insert: 
String1=String0.Insert(Position,String)
Remove
(取走两个整数参数,一个开始位置和一个计数器,计数器就是要移除字符的数量)
s1=s1.Remove(Position,name.Length)
Replace
取两个参数:要移除掉的字符串和用来替换的字符串。返回新的字符串。

ToLower
ToUpper 把字符串从小写转换成大写形式

Trim
TrimEnd   把空格或者其他字符从字符串的任一端移除掉

arr.Trim(charArr[0])


StringBuilder类
StringBuilder类提供了对多变的String对象的存取。String类的对象是不变的,每次改变String对象的值,就会产生一个新的对象来保存数值。
StringBuilder对象却是多变的。当对StringBuilder对象进行改变时,正在改变的是原始对象而不是对副本进行操作。

使用StringBuilder类必须using System.Text
1、构建StringBuilder对象
StringBuilder sb=new StringBuilder(); 默认可以保存长度为16个字符的字符串
StringBuilder sb=new StringBuilder(25); 可以保存25个字符的对象。
StringBuilder sb=new StringBuilder("Hello,world")
每次一旦超过StringBuilder对象的容量,那么容量就会增加16个字符。

2、获取并且设置关于StringBuilder对象的信息
Length指定了当前实例中字符的数量
Capacity属性则返回实例的当前容量  Capacity()
MaxCapacity返回对象当前实例中所允许的最大字符数量

3、修改StringBuilder对象
Append方法:在StringBuilder对象的末尾处添加字符。
取一个字符串作为参数,并把字符串串连到对象中当前值的末尾。
sb.Append(words[i])

Insert:允许在当前StringBuilder对象中插入字符串。
取三个参数,第一个说明插入的开始位置startPosition,第二个是要插入的字符串。第三个参数为可选项,说明打算在对象中插入字符串的次数。

Remove 把字符从StringBuilder对象中移除掉。两个参数:开始位置和要移除掉的字符的数量。‘
Replace:替换StringBuilder对象的字符。两个参数:要替换的旧字符串和要替换的新字符串。

在处理StringBuilder对象时,经常需要把它们转换成字符串,可以使用ToString方法来实现。会返回StringBuilder实例中的一个字符串实例。

posted on 2015-11-07 03:23  一心一念  阅读(224)  评论(0编辑  收藏  举报

导航