C#字符串处理技术专题

19 篇文章 0 订阅

           C#字符串处理技术专题

 .NET提供了String类和System.Text命名空间等来快速实现字符串处理功能,下面对字符串处理进行详细介绍。

  • 比较字符串
  • 定位字符及子串
  • 格式化字符串
  • 截取字符串
  • 分割字符串
  • 插入和填充字符串
  • 删除和剪贴字符串
  • 复制字符串
  • 替换字符串
  • StringBuilder的定义和使用
  • String和可变字符串类StringBuilder的区别

比较字符串

  比较字符串是指按照字典排序的规则,判断两个字符串的大小。

  String类中,常用的比较字符串的方法包括Compare,CompareTo以及Equals等。

1.Compare方法

 Compare方法是String类的静态方法,用于全面比较两个字符串对象。

 常用的方法:

   int Compare(string strA,string strB)

  参数说明:

   strA,strB待比较的两个字符串

  返回值:

参数条件

返回值

strA小于strB

负整数

strA大于strB

正整数

strA等于strB

0

     Demo:

 class Program

       {

            static void Main(string[]args)

           {

                String str1 = "你好";

             String str2 = "你好吗";

               //字符串比较

              Console.WriteLine(String.Compare(str1,str2));

               Console.WriteLine(String.Compare(str1,str1));

               Console.WriteLine(String.Compare(str2,str1));

            }

        }

    结果:

2.CompareTo方法

 CompareTo方法将当前字符串对象与另一个字符串对象作比较,作用与Compare类似,返回值也相同。

   Demo:

 class Program

  {

     static void Main(string[]args)

     {

        string strA = "Hello";

        string strB = "HI";

         Console.WriteLine(strA.CompareTo(strB));

      }

  }

  结果:

   CompareTo与Compare区别:

  1.CompareTo不是静态方法,可以通过一个String对象调用

  2.CompareTo没有重载形式,只能按照大小写敏感方式比较两个整串。

3.Equals方法

  Equals方法用于判断两个字符串是否相同。

  Demo:

  class Program

  {

    static void Main(string[]args)

   {

      String strA = "1";

      String strB = "1";

       //Equals方法的使用

      Console.WriteLine(String.Equals(strA,strB));

      Console.WriteLine(strA.Equals(strB));

    }

      }
结果:

定位字符及子串

定位子串是指一个字符串中寻找其中包含的子串或者某个字符。

在String类中,常用的定位子串和字符的方法包括:

   StartWith/EndsWith

   IndexOf/LastIndexOf

1.StartWith/EndsWith方法

 StartWith方法可以判断一个字符串对象是否以另一个子字符串开头,如果是,返回True,否则返回False。

 EndsWith方法可以判断一个字符串是否以另一个字符串结尾。

 Demo:

 class Program

  {

    static void Main(string[]args)

      {

           String strA = "Welcome toBeijin";

           Console.WriteLine(strA.StartsWith("W"));

           Console.WriteLine(strA.EndsWith("n"));

       }

   }

  结果:

2.IndexOf/LastIndexOf方法

    IndexOf方法用于搜索在上一个字符串中,某个特定的字符或子串第一次出现的位置,该方法区分大小写,并从字符串的首字符开始以0计数。如果字符串中不包含这个字符和子串,则返回-1。

   LastIndexOf用于搜索在一个字符串中,某个特定的字符或字串最后一次出现的位置。

 Demo:

class Program

{

 static void Main(string[]args)

{

 String strA = "HelloWorld";

 Console.WriteLine(Convert.ToString(strA.IndexOf("o")));//o第一次出现的位置

 Console.WriteLine(Convert.ToString(strA.LastIndexOf("o")));//o最后一次出现的位置

 }

}

结果:

格式化字符串

Format方法用于创建格式化的字符串以及连接多个字符串对象。

方法的格式:

    publicstatic string Format(string format,param object[] args)

   说明:

     format:返回字符串的格式

     args:一系列变量参数

 示例:

  classProgram

   {

  static void Main(string[]args)

   {

     string strA = "Hello";

     string strB = "World";

     string newStr =String.Format("{0},{1}",strA,strB);

    Console.WriteLine(newStr);

  //将当前时间格式化为YYYY-MM-dd

    DateTime Dta = DateTime.Now;

 string strC = String.Format("{0:d}",Dta);//{0:d}表示将时间格式化为短日期表示形式

    Console.WriteLine(strC);

     }

 }

 

截取字符串

截取字符串需要用到String类的Substring方法,该方法用来从字符串中检索子字符串

n  两种形式:

  1.publicstring Substring(int startIndex)

   startIndex:字符串中子字符串的起始字符位置

   返回值:一个String对象,它等于字符串中从startIndex开始的子字符串,如果startIndex等于此字符串的长度,则为Empty。

  2.publicstring Substring(int startIndex,int length)

    startIndex:子字符串的起始位置的索引

    length:子字符串中的字符数

    返回值:一个String,它等于字符串中从startIndex开始的长度为length的子字符串,如果startIndex等于此字符串的长度且length为0,则为Empty。

 Demo:

 class Program

 {

  static void Main(string[]args)

  {

 string strA = "HelloWorld";

   Console.WriteLine("strA={0}",strA);

 //截取从第三个字符开始到结束的子串

 string strB = strA.Substring(3);

 Console.WriteLine("strB={0}",strB);

  //截取从第六个字符开始,长度为5的子串

  string strC = strA.Substring(6,5);

  Console.WriteLine("strC={0}",strC);

   }

   }

  结果:

分割字符串

使用Split方法可以将一个字符串,按照某个分隔符,分割成一系列小的字符串。

  例如:Hello^^World按照字符^进行分割,可以得到3个小的字符串,即”Hello”,””(空串)和”World”。

  Demo:

  class Program

 {

 static void Main(string[]args)

 {

 string strA = "成^^功";

 char[] separator = { '^' };

 string[] splitstrings = newstring[100];

splitstrings =strA.Split(separator);

 int i= 0;

 while(i < splitstrings.Length)

 {

 Console.WriteLine("item{0}:{1}",i,splitstrings[i]);

  i++;

 }

}

 }

结果:

插入和填充字符串

 String类包含了一个字符串中插入新元素的方法,可以用Insert在字符串的任意位置插入任意字符。

 使用String类的PadLeft/PadRight方法,可以在一个字符串的左右两侧进行字符填充。

1.Insert方法

 Insert方法用于在一个字符串的指定位置插入另一个字符串,从而构造一个新的字符串。

 class Program

 {

  static void Main(string[]args)

  {

  string strA = "HI";

  string strB = "World";

  string newStr = "";

  newStr = strA.Insert(1,strB); //在指定的位置插入strB

  Console.WriteLine(newStr);

 }

 }

2.PadLeft/PadRight方法

   有时候需要对一个字符串进行填充,例如把”HI”变为长度为4个字符的字符串,并使用字符”@”填充,即变成”@@HI”或”HI@@”。

   PadLeft方法用于在一个字符串的左侧进行填充,使其达到一定的长度。

   PadRight方法用于在一个字符串的右侧进行填充,使其达到一定的长度。

 Demo:

class Program

 {

   static void Main(string[]args)

{            

  /*PadLeft and PadRight 示例 */

 string strA = "HI";

 string strB = "";

 string strC = "";

 strB= strA.PadLeft(4,'@');

 strC= strA.PadRight(4,'@');

 Console.WriteLine("strB={0}",strB);

 Console.WriteLine("strC={0}",strC);

 }

}

删除和剪贴字符串

使用Remove方法在任意字符串的任意位置删除任意长度的子字符串。

使用Trim, TrimEnd或TrimStart方法剪切掉字符串中的一些特殊字符。

1.Remove方法

 Remove方法从一个字符串的指定位置开始,删除指定数量的字节。

  方法格式:

   public StringRemove(int startIndex,int Clunt)

    startIndex:用于指定开始删除的位置,索引从0开始。

    Clunt:指定删除的字节数量

 Demo:

 class Program

  {

  static void Main(string[]args)

  {

string strA = "Happy";

string strB = "";

  strB = strA.Remove(2,3);//删除从第三个字符开始,长度为3的子字符串

  Console.WriteLine("strA={0}",strA);

  Console.WriteLine("strB={0}",strB);

  }

  }

2.Trim方法

  作用:

   1.从字符串的开始位置和末尾移除空白字符的所有匹配项。

   public string Trim()

   返回值:一个新String,相当于将指定字符串的首尾空白字符移除后形成的字符串。

   2.从字符串的开始和末尾移除数组中指定的一组字符的所有匹配项。

   public stringTrim(params char[] trimChars)

   trimChars:数组中包含了指定要去掉的字符,如果缺省,则删除空格符号。

  返回值:从指定字符串的开始和结尾移除trimChars中字符的所有匹配项后剩余的String,如果trimChars为空引用,则改为移除空白字符。

   Dmeo:

 class Program

 {

   static void Main(string[]args)

  {

    string strA = "  Program Test ";

    string strB = "";

      string strC = "@Happy#$";

    char[] strD = {'@','#','$' };

    strB= strA.Trim();//移除strA首尾的空白字符

      Console.WriteLine("strA={0}",strA);

    Console.WriteLine("strB={0}",strB);

strB= "";

  strB= strC.Trim(strD);//移除strC中含有strD中的字符

Console.WriteLine("strC={0}",strC);

  Console.WriteLine("strB={0}",strB);

  }

 }

3.TrimStart/TrimEnd方法

 TrimStart方法:用来从字符串的开始位置移除数组中指定的一组字符的所有匹配项

  public string TrimStart(params char[] trimChars)

 TrimEnd方法:用来从字符串的结尾移除数组中指定的一组字符的所有匹配项

  public string TrimEnd(params char[] trimChars)

  Demo:

 class Program

 {

   static void Main(string[]args)

 {

  string strA = "";

  char[] strB = {'@','#','$' };

string strC = "@ 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);

 }

 }

复制字符串

String类包含了复制字符串的两种方法Copy和CopyTo。

Copy方法:把一个字符串复制到另一个字符数组中。

CopyTo方法:可以实现和Copy相同的功能,同时可以复制源字符串中的一部分到一个字符数组中。

1.Copy方法

 Copy方法格式:

   public static string Copy(string str)

   str:为需要复制的源字符串,方法返回目标字符串。

  返回值:与str具有相同值的新String

示例:

    strA = “Hello”;

    strB = “”;

    strB = string.Copy(strA);

2.CopyTo方法

 CopyTo方法格式:

public void CopyTo(int sourceIndex,char[]destination,int destinationIndex, int count)

CopyTo方法参数值及说明:

参数

说明

sourceIndex

需要复制的字符的起始位置

destination

目标字符数组

destinationIndex

指定目标数组中的开始存放位置

count

指定要复制的字符个数

    Demo:

 class Program

 {

    static void Main(string[]args)

   {

      string strA = "Happy";

  char[] strB = new char[100];

  strA.CopyTo(0,strB,0,3);

  Console.WriteLine("strA={0}",strA);

  Console.WriteLine(strB);

   }

  }

替换字符串

要替换一个字符串中的某些特定的字符或者某个子串,使用Replace方法。

 Replace方法:

   public stringReplace(char oldChar,char newChar)

   oldChar:待替换的字符   newChar:替换后的字符

   public string Replace(string oldstring,stringnewstring)

   oldstring:待替换的子串  newstring替换后的新子串

 Demo:

class Program

{

 static void Main(string[]args)

{

  string strA = "Hello";

string strB =strA.Replace("ll","r");

  Console.WriteLine("strA={0}",strA);

  Console.WriteLine("strB={0}",strB);

}

}

StringBuilder的定义和使用

 StringBuilder类位于System.Text命名空间下,表示可变字符串。

程序中存储不确定的字符串时,需要使用StringBuilder类。

StringBuilder类常用方法及说明:

 Demo:

class Program

{

 static void Main(string[]args)

{

  //创建了一个StringBuilder的对象

StringBuilder Builder = newStringBuilder();

  Builder.Append("HelloWorld");//追加字符串

  Console.WriteLine(Builder);

  Builder.AppendFormat("{0} End","@");//追加格式化字符串

Console.WriteLine(Builder);

  Builder.AppendLine(" This isone 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);

 }

 }

结果:

 总结:

   StringBuilder类表示值为可变字符序列的对象,其值可变的原因是由于在通过追加,删除,替换或插入而创建其实例后对其修改。

String和可变字符串类StringBuilder的区别

    StringBuilder表示可变字符串,String是不可改变的。

    使用System.String类中的方法时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配内存,在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销非常昂贵。

    使用StringBuilder目的就是针对大量String操作,避免产生太多的临时对象,当程序只是对某个字符串进行一次或几次操作时,采用String类即可。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值