a、比较字符串
比较字符串是指按照字典排序的规则,判断两个字符串的大小。
String类中,常用的比较字符串的方法包括Compare,CompareTo以及Equals等。
1.Compare方法
Compare方法是String类的静态方法,用于全面比较两个字符串对象。
常用的方法:
intCompare(string strA,string strB)
参数说明:
strA,strB待比较的两个字符串
返回值:
参数条件 返回值
strA小于strB 负整数
strA大于strB 正整数
strA等于strB 0
Demo:
Stringstr1 = "你好";
Stringstr2 = "你好吗";
//字符串比较
Console.WriteLine(String.Compare(str1,str2));
Console.WriteLine(String.Compare(str1,str1));
Console.WriteLine(String.Compare(str2,str1));
运行结果:
-1
0
1
2.CompareTo方法
CompareTo方法将当前字符串对象与另一个字符串对象作比较,作用与Compare类似,返回值也相同。
CompareTo与Compare区别:
1.CompareTo不是静态方法,可以通过一个String对象调用
2.CompareTo没有重载形式,只能按照大小写敏感方式比较两个整串。
3.Equals方法
Equals方法用于判断两个字符串是否相同。
Demo:
StringstrA = "1";
StringstrB = "1";
//Equals方法的使用
Console.WriteLine(String.Equals(strA,strB));
Console.WriteLine(strA.Equals(strB));
运行结果:
true
true
b、定位字符及子串
定位子串是指一个字符串中寻找其中包含的子串或者某个字符。
在String类中,常用的定位子串和字符的方法包括:StartWith/EndsWith,IndexOf/LastIndexOf
1.StartWith/EndsWith方法
StartWith方法可以判断一个字符串对象是否以另一个子字符串开头,如果是,返回True,否则返回False。
EndsWith方法可以判断一个字符串是否以另一个字符串结尾。
Demo:
StringstrA = "Welcome to Beijing";
Console.WriteLine(strA.StartsWith("W"));
Console.WriteLine(strA.EndsWith("g"));
运行结果:
true
true
2.IndexOf/LastIndexOf方法
IndexOf方法用于搜索在上一个字符串中,某个特定的字符或子串第一次出现的位置,该方法区分大小写,并从字符串的首字符开始以0计数。
如果字符串中不包含这个字符和子串,则返回-1。
LastIndexOf用于搜索在一个字符串中,某个特定的字符或字串最后一次出现的位置。
Demo:
StringstrA = "HelloWorld";
Console.WriteLine(Convert.ToString(strA.IndexOf("o")));//o第一次出现的位置
Console.WriteLine(Convert.ToString(strA.LastIndexOf("o")));//o最后一次出现的位置
运行结果:
4
6
c、格式化字符串
Format方法用于创建格式化的字符串以及连接多个字符串对象。
方法的格式:
public staticstring Format(string format,param object[] args)
说明:
format:返回字符串的格式
args:一系列变量参数
Demo: :
stringstrA = "Hello";
stringstrB = "World";
stringnewStr =String.Format("{0},{1}",strA,strB);
Console.WriteLine(newStr);
运行结果:Hello,World
d、截取字符串
截取字符串需要用到String类的Substring方法,该方法用来从字符串中检索子字符串
两种形式:
1.public string Substring(int startIndex)
startIndex:字符串中子字符串的起始字符位置
返回值:一个String对象,它等于字符串中从startIndex开始的子字符串,如果startIndex等于此字符串的长度,则为Empty。
2.public string Substring(int startIndex,int length)
startIndex:子字符串的起始位置的索引
length:子字符串中的字符数
返回值:一个String,它等于字符串中从startIndex开始的长度为length的子字符串,如果startIndex等于此字符串的长度且length为0,则为Empty。
Demo:
stringstrA = "HelloWorld";
Console.WriteLine("strA={0}",strA);
//截取从第6个字符开始到结束的子串
stringstrB = strA.Substring(5);
Console.WriteLine("strB={0}",strB);
//截取从第1个字符开始,长度为5的子串
stringstrC = strA.Substring(0, 5);
Console.WriteLine("strC={0}",strC);
运行结果:
strA=HelloWorld
strB=World
strC=Hello
e、分割字符串
使用Split方法可以将一个字符串,按照某个分隔符,分割成一系列小的字符串。
例如:Hello^^World按照字符^进行分割,可以得到3个小的字符串,即”Hello”,””(空串)和”World”。
Demo:
stringstrA = "成^^功";
char[]separator = { '^' };
string[]splitstrings = new string[10];
splitstrings= strA.Split(separator);
int i =0;
while (i< splitstrings.Length)
{
Console.WriteLine("item{0}:{1}",i, splitstrings[i]);
i++;
}
运行结果:
Item0:成
Item1:
Item2:功
f、插入和填充字符串
String类包含了一个字符串中插入新元素的方法,可以用Insert在字符串的任意位置插入任意字符。
使用String类的PadLeft/PadRight方法,可以在一个字符串的左右两侧进行字符填充。
1.Insert方法
Insert方法用于在一个字符串的指定位置插入另一个字符串,从而构造一个新的字符串。
Demo:
stringstrA = "HI";
stringstrB = "World";
stringnewStr = "";
newStr =strA.Insert(1, strB); //在指定的位置插入strB
Console.WriteLine(newStr);2.PadLeft/PadRight
运行结果:HWorldI
2.PadLeft/PadRight方法
有时候需要对一个字符串进行填充,例如把”HI”变为长度为4个字符的字符串,并使用字符”@”填充,即变成”@@HI”或”HI@@”。
PadLeft方法用于在一个字符串的左侧进行填充,使其达到一定的长度。
PadRight方法用于在一个字符串的右侧进行填充,使其达到一定的长度。
Demo:
stringstrA = "HI";
stringstrB = "";
stringstrC = "";
strB =strA.PadLeft(4, '@');
strC =strA.PadRight(4, '@');
Console.WriteLine("strB={0}",strB);
Console.WriteLine("strC={0}",strC);
运行结果:
strB=@@HI
strC=HI@@
g、删除和剪贴字符串
使用Remove方法在任意字符串的任意位置删除任意长度的子字符串。
使用Trim, TrimEnd或TrimStart方法剪切掉字符串中的一些特殊字符。
1.Remove方法
Remove方法从一个字符串的指定位置开始,删除指定数量的字节。
方法格式:
public String Remove(int startIndex,int Clunt)
startIndex:用于指定开始删除的位置,索引从0开始。
Clunt:指定删除的字节数量
Demo:
stringstrA = "Happy";
stringstrB = "";
strB =strA.Remove(2, 3);//删除从第三个字符开始,长度为3的子字符串
Console.WriteLine("strA={0}",strA);
Console.WriteLine("strB={0}",strB);
运行结果:
strA=Happy
strB=Ha
2.Trim方法
作用:
1.从字符串的开始位置和末尾移除空白字符的所有匹配项。
public string Trim()
返回值:一个新String,相当于将指定字符串的首尾空白字符移除后形成的字符串。
2.从字符串的开始和末尾移除数组中指定的一组字符的所有匹配项。
public string Trim(params char[] trimChars)
trimChars:数组中包含了指定要去掉的字符,如果缺省,则删除空格符号。
返回值:从指定字符串的开始和结尾移除trimChars中字符的所有匹配项后剩余的String,如果trimChars为空引用,则改为移除空白字符。
Demo:
stringstrA = " Program Test ";
stringstrB = "";
stringstrC = "@Happy#$";
char[]strD = { '@', '#', '$' };
strB =strA.Trim();//移除strA首尾的空白字符
Console.WriteLine("strA={0}",strA);
Console.WriteLine("strB={0}",strB);
stringstrE = strC.Trim(strD);//移除strC中含有strD中的字符
Console.WriteLine("strC={0}",strC);
Console.WriteLine("strD={0}",strE);
运行结果:
strA= Program Test
strB=Program Test
strC=@Happy#$
strD=Happy
3.TrimStart/TrimEnd方法
TrimStart方法:用来从字符串的开始位置移除数组中指定的一组字符的所有匹配项
public string TrimStart(params char[] trimChars)
TrimEnd方法:用来从字符串的结尾移除数组中指定的一组字符的所有匹配项
public string TrimEnd(params char[] trimChars)
Demo:
stringstrA = "";
char[]strB = { '@', '#', '$' };
stringstrC = "@Happy#$";
strA =strC.TrimStart(strB);
Console.WriteLine("strC={0}",strC);
Console.WriteLine("strA={0}",strA);
strA ="";
strA =strC.TrimEnd(strB);
Console.WriteLine("strC={0}",strC);
Console.WriteLine("strA={0}",strA);
运行结果:
strC=@Happy#$
strA=Happy#$
strC=@Happy#$
strA=@Happy
h、复制字符串
String类包含了复制字符串的两种方法Copy和CopyTo。
Copy方法:把一个字符串复制到另一个字符数组中。
CopyTo方法:可以实现和Copy相同的功能,同时可以复制源字符串中的一部分到一个字符数组中。
1.Copy方法
Copy方法格式:
public static string Copy(string str)
str:为需要复制的源字符串,方法返回目标字符串。
返回值:与str具有相同值的新String
Demo:
stringstrA = "Hello";
stringstrB = "";
strB =string.Copy(strA);
Console.WriteLine(strB);
运行结果:Hello
2.CopyTo方法
CopyTo方法格式:
public void CopyTo(int sourceIndex,char[]destination,int destinationIndex, int count)
CopyTo方法参数值及说明:
参数
说明:
sourceIndex 需要复制的字符的起始位置
destination 目标字符数组
destinationIndex 指定目标数组中的开始存放位置
count 指定要复制的字符个数
Demo:
stringstrA = "Happy";
char[]strB = new char[10];
strA.CopyTo(0,strB, 0, 3);
Console.WriteLine("strA={0}",strA);
Console.WriteLine(strB);
运行结果:
strA=Happy
Hap
i、替换字符串
要替换一个字符串中的某些特定的字符或者某个子串,使用Replace方法。
1.Replace方法:
public string Replace(char oldChar,char newChar)
oldChar:待替换的字符 newChar:替换后的字符
public string Replace(string oldstring,stringnewstring)
oldstring:待替换的子串 newstring替换后的新子串
Demo:
stringstrA = "Hello";
stringstrB =strA.Replace("ll","r");
Console.WriteLine("strA={0}",strA);
Console.WriteLine("strB={0}",strB);
运行结果:
strA=Hello
strB=Hero
2.StringBuilder的定义和使用
StringBuilder类位于System.Text命名空间下,表示可变字符串。
程序中存储不确定的字符串时,需要使用StringBuilder类。
StringBuilder类常用方法及说明:
Demo:
//创建了一个StringBuilder的对象
StringBuilderBuilder = new StringBuilder();
Builder.Append("HelloWorld");//追加字符串
Console.WriteLine(Builder);
Builder.AppendFormat("{0}End","@");//追加格式化字符串
Console.WriteLine(Builder);
Builder.Append("This is one line.");//将默认的行终止符追加到结尾
Console.WriteLine(Builder);
Builder.Insert(0,"Begin");//将指定对象的字符串插入到此实例指定位置
Console.WriteLine(Builder);//Builder.Length指Builder实例的长度
Builder.Remove(19,Builder.Length - 19);//将指定范围的字符从实例中移除
Console.WriteLine(Builder);
Builder.Replace("Begin","Begin:");//替换字符串
Console.WriteLine(Builder);
运行结果:
HelloWorld
HelloWorld@End
HelloWorld@End This is one line
BeginHelloWorld@End This is one line
BeginHelloWorld@End
Begin:HelloWorld@End
总结:
StringBuilder类表示值为可变字符序列的对象,其值可变的原因是由于在通过追加,删除,替换或插入而创建其实例后对其修改。
String和可变字符串类StringBuilder的区别:
StringBuilder表示可变字符串,String是不可改变的。
使用System.String类中的方法时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配内存。
在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销非常昂贵。
使用StringBuilder目的就是针对大量String操作,避免产生太多的临时对象,当程序只是对某个字符串进行一次或几次操作时,采用String类即可。