C#字符串


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类即可。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值