黑马程序员_字符串处理

来源:互联网 发布:控制上网的软件 编辑:程序博客网 时间:2024/05/21 15:41

------- Windows Phone 7手机开发、.Net培训、期待与您交流! ------- 

 字符串处理

 在程序开发中,几乎所有的程序都包含字符串的处理。String类是C#的字符串类型的基础。String类定义了大量的方法、属性和字段,帮助开发人员更好地控制字符串的构造和其他操作。与字符串处理紧密相关的操作是将数据格式化为人类可读的形式。除了String类之外还有StringBuilder类。

String和StringBuilder类

String类表示的是不变字符串,即一旦创建了字符串,就不能更改组成字符串的字符序列。此限制是为了使C#更有效地实现字符串。为了创建一个能够改变其字符序列的字符串,C#提供了StringBuilder类,该类包含在System.Text命名空间中。然而,对于大多数情况,需要使用的是String类而不是StringBuilder类。

String类

String类在System命名空间中定义,它为C#提供字符串处理功能,是C#内置的字符串类型的继承。它表示一系列的有序Unicode字符,用来表示文本。

下面声明一个名称为str的String对象,它的值为“这是一个字符串。”。

string str = "这是一个字符串。";            //声明一个名为str的String类的对象

注意:在.NET Framework中,string和System.String表示同一个类型。实际上,string是System.String类型的简单表示方式。

String对象是字符(Char对象)的有序集合,用来表示字符串。它的值是该有序集合的内容,并且是不可变的。虽然有些方法看起来修改了String对象,而实际上是返回了一个包含修改后内容的新的String对象。

下面声明一个名称为str的String对象,它的值为“这是一个字符串。”。之后,对str变量进行赋值。赋值之后,str变量的值为“这是另一个字符串。”。

string str = "这是一个字符串。";     //创建一个String对象

str = "这是另一个字符串。";    //为str赋值,实际上,也创建了新的String对象

执行“string str = ”这是一个字符串。“;”语句之后,此时,系统为str变量分配了一块内存,并存放“这是一个字符串。”。执行“str = ”这是另一个字符串。“;”语句之后,此时,系统重新为str变量分配了一块新的内存,并存放“这是另一个字符串。”。

注意:“这是一个字符串。”所占有的内存将不能再被引用,它最终被系统自动回收。

String类包含1个只读字段和2个属性,它们的具体说明如下所示。

Empty字段:表示空字符串。Chars属性:获取当前String对象中位于指定字符位置的字符。

Length属性:获取当前String对象中的字符数。

下面首先声明一个名称为str的String对象,它的值为“这是一个字符串。”。然后,获取str对象的Length属性的值(即str对象的长度,它包含字符的数量),并保存为len变量。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "这是一个字符串";
            int len = str.Length;
            Console.WriteLine("str字符串的长度为:"+len);
            Console.ReadKey();
        }
    }
}

String对象是字符(Char对象)的有序集合。如果要获取String对象中的某一个字符,则需要使用索引。索引是从零开始、从字符串的起始位置(其索引为零)计起的非负数字。索引是Char对象(字符)在String对象中的位置,而不是Unicode字符的位置。

下面首先声明一个名称为s的String对象,它的值为“这是一个字符串。”。然后获取s对象的索引为0的字符,并保存为ch变量。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "这是一个字符串";
            char ch = s[0];
            Console.WriteLine("索引为0的字符为:" + ch);
            Console.ReadKey();
        }
    }
}

StringBuilder类

在需要对字符串执行重复修改的情况下,使用String对象会每次分配新的内存空间,系统开销会比较昂贵。如果要修改字符串而不创建新的对象,则可以使用StringBuilder类。StringBuilder类表示可变字符串,可以创建能够动态修改(如追加、移除、替换、插入等)的字符串对象。

下面创建一个名称为strb的StringBuilder对象。此时,它的值为空字符串。

StringBuilder strb = new StringBuilder();   //创建一个StringBuilder类的对象

StringBuilder类包括以下4个常用属性,具体说明如下所示。

Length属性:获取或设置StringBuilder对象的长度。

Capacity属性:获取或设置StringBuilder对象的容量。

MaxCapacity属性:获取或设置StringBuilder对象的最大容量。

Chars属性:获取或设置指定位置处的字符。

下面首先创建一个名称为strb的StringBuilder对象。然后添加“这是StringBuilder类的对象。”字符串到strb对象中。最后,获取strb对象的长度(即Length属性的值),并保存为len变量。

 namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder strb = new StringBuilder();   //创建StringBuilder对象strb
            strb.Append("这是一个StringBuilder对象");    //添加一个对象
            int len = strb.Length;
            Console.WriteLine("strb的内容为:" + strb);
            Console.WriteLine("strb的长度为:" + len);
            Console.ReadKey();
        }
    }
}

通常情况下,如果StringBuilder实例没有指定容量或最大容量,那么该实例具有一个默认容量值。当然,开发人员也可以通过Capacity属性设置该实例的容量,被设置的容量值必须大于或等于其Length属性的值。

注意:对于一个String对象而言,一旦为该对象赋值之后,那么该对象的值所占用的内存是不能被修改的。如果要修改String对象的值,那么将重新分配新的内存。因此,如果频繁修改String对象,则可能产生大量的不可访问的内存,会影响应用程序的性能。由于StringBuilder对象的值占用的内存是可修改的,即对StringBuilder对象每一次的修改操作都可能不需要分配新的内存,而在该对象的值所占的内存上进行操作,从而减少了应用程序的开销。

使用不变字符串

String类表示的字符串是不变字符串。对不变字符串的每一次处理都将产生一个新的字符串。不变字符串处理的方法主要包括插入字符串、移除字符串、替换字符串、联接字符串、分隔字符串、填充字符串等。

插入字符串

插入字符串是指在字符串是指定位置插入一个新的字符串。String类提供Insert()方法实现该功能。

public string Insert(int startIndex,string value)

上述方法将value参数指定字符串插入到字符串的startIndex指定的位置。startIndex参数表示插入的位置(即索引值),value参数表示被插入的新字符串。上述方法返回一个新的字符串。

下面创建名称为str1的String对象,它的值为“这是一个字符串。”。str1对象调用Insert(int startIndex,string value)方法在其索引0处插入“插入字符串…”字符串,并保存新的字符串为str2。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1 = "这是一个字符串";
            string str2 = str1.Insert(0, "插入字符串…");
            Console.WriteLine("str1的内容为:" + str1);
            Console.WriteLine("str2的内容为:" + str2);
            Console.ReadKey();
        }
    }
}

执行插入操作之后,str2对象的值为“插入字符串…这是一个字符串。”。

移除字符串

移除字符串是指从字符串指定位置开始移除其后的所有字符或指定数量的字符。String类提供Remove()方法实现该功能。

public string Remove(int startIndex)

上述方法从从startIndex位置开始移除其后的所有字符。startIndex参数表示被移除字符的开始位置。该方法返回一个新的字符串。

public string Remove(int startIndex,int count)

上述方法从startIndex位置开始移除其后的数量为count的字符。startIndex参数表示被移除字符的开始位置,count参数表示被移除字符串的长度。该方法返回一个新的字符串。

下面创建名称为str1的String对象,它的值为“这是一个字符串。”,然后执行以下两个操作。

(1)调用Remove(int startIndex)方法,移除str1对象中从5个字符开始之后的所有字符。执行移除操作之后,新的字符串保存为stra对象。

(2)调用Remove(int startIndex,int count)方法,移除str1对象中从3个字符开始之后的2个字符。执行移除操作之后,新的字符串保存为strb对象。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1 = "这是一个字符串";
            string stra = str1.Remove(5);  //移除5个字符之后的所有字符
            Console.WriteLine("stra的内容为:" + stra);
            string strb = str1.Remove(3, 2);   //移除3个字符之后的2个字符
            Console.WriteLine("strb的内容为:" + strb);
            Console.ReadKey();
        }
    }
}

执行第一次移除操作之后,stra对象的值为“这是一个字”。执行第二次移除操作之后,strb对象的值为“这是一符串。”。

替换字符串

替换字符串是指将字符串中指定的字符或字符串用新的字符或字符串替换。String类提供Replace()方法实现该功能。

public string Replace(char oldChar,char newChar)

上述方法将字符串中指定字符替换为新的字符。oldChar参数表示被替换的字符,newChar参数表示替换后的字符。该方法返回一个新的字符串。

public string Replace(string oldValue,string newValue)

上述方法将将字符串中指定字符串替换为新的字符串。oldValue参数表示被替换的字符串,newValue参数表示替换后的字符串。该方法返回一个新的字符串。

下面创建名称为str1的String对象,它的值为“这是一个字符串。”,然后调用Replace(char oldChar,char newChar)方法将str1对象中的“一”字符替换为“二”字符。执行替换操作之后,新的字符串保存为str对象。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1 = "这是一个字符串";
            string str = str1.Replace("一", "二");
            Console.WriteLine("新的字符串为:{0}", str);
            Console.ReadKey();
        }
    }
}

执行替换操作之后,str对象的值为“这是二个字符串。”。

联接字符串

联接字符串是指将一个或多个字符串对象联接为一个新的字符串。String类提供Concat()和Join()方法实现该功能。

public static string Concat(object str0)

上述方法是联接str0对象的字符串表示形式,并创建一个新的字符串。str0参数表示被联接的对象。该方法返回一个新的字符串。

public static string Concat(string str0,string str1)

上述方法联接str0和str1字符串,并创建一个新的字符串。str0参数表示被联接的对象,str1表示被联接的字符串。该方法返回一个新的字符串。

public static string Concat(string str0,string str1,string str2)

上述方法联接str0、str1和str2字符串,并创建一个新的字符串。str0参数表示被联接的对象,str1、str2表示被联接的字符串。该方法返回一个新的字符串。

public static string Concat(string str0,string str1,string str2,string str3)

上述方法联接str0、str1、str2和str3字符串,并创建一个新的字符串。str0参数表示被联接的对象,str1、str2表示被联接的字符串。该方法返回一个新的字符串。

注意:Concat()方法是string类的静态方法。

下面首先创建两个字符串对象:stra和strb,它们的值分别为“这”和“是一个字符串。”。然后调用string类的Concat()静态方法联接stra和strb对象。执行联接操作之后,新的字符串保存为str对象。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string stra = "这";
            string strb = "是一个字符串";
            string str = string.Concat(stra, strb);
            Console.WriteLine("str 字符串为:{0}", str);
            Console.ReadKey();
        }
    }
}

执行联接操作之后,str对象的值为“这是一个字符串。”。

Join()方法可以将数组中的所有字符串联成一个字符串,且各个字符被指定的字符串分隔。

public static string Join(string separator,string[] value)

上述方法将value数组中的所有字符串联接为一个字符串,各个字符被separator分隔。separator参数表示分隔字符串,value参数为一个字符串数组,它包含所有被联接的字符串。该方法返回一个新的字符串。

public static string Join(string separator,string[] value,int startIndex,int count)

上述方法将value数组中的count个字符串(第一个字符串索引为startIndex)联接为一个字符串,各个字符串被separator分隔。separator参数表示分隔字符串,value参数为一个字符串数组,它包含所有被联接的字符串;startIndex参数指定被联接的的一个字符串,count参数指定被联接字符串的数量。该方法返回一个新的字符串。

注意:Join()方法是string类的静态方法。

下面首先创建两个字符串对象:stra和strb,它们的值分别为“这”和“是一个字符串。”。然后调用string类的Join()静态方法联接stra和strb对象。执行连接操作之后,新的字符串保存为str对象。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string stra = "这";
            string strb = "是一个字符串";
            string str = string.Join("", new string[] { stra, strb });
            Console.WriteLine("str = " + str);
            Console.ReadKey();
        }
    }
}

执行联接操作之后,str对象的值为“这是一个字符串。”。

分隔字符串

分隔字符串是指将一个字符串被指定的分隔字符或字符串分隔为多个子字符串,并返回由子字符串组成的字符串数组。String类的提供Split()方法实现该功能。

public string[] Split(params char[] separator);

public string[] Split(char[] separator,int count);

public string[] Split(char[] separator,StringSplitOptions options);

public string[] Split(string[] separator,StringSplitOptions options);

public string[] Split(char[] separator,int count,StringSplitOptions options);

public string[] Split(string[] separator,int count,StringSplitOptions options)。

上述方法实现的是分隔字符串的功能。separator参数表示分隔字符或字符串数组。count参数指定返回的子字符串的最大数量。options参数指定字符串分隔选项,它的类型为StringSplitOptions枚举,可以为以下2个值之一。StringSplitOptions.None:子字符串的数组可以包含空字符串。StringSplitOptions.RemoveEmptyEntries:子字符串的数组不包含空字符串。

下面首先创建名称为str1的字符串,它的值为“这是 一个 字符串 。”。然后调用Split()方法将str1对象分隔为4个子字符串,分隔字符为“ ”(空白字符)。分隔后的子字符串保存为strs数组。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1 = "这是 一个 字符串 .";
            string[] strs = str1.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            Console.WriteLine("strs数组的每个元素为:");
            foreach (string i in strs)
            {
                Console.Write(i + " ");
            }
            Console.ReadKey();
        }
    }
}

strs数组包含4个字符串,它们的值分别为这是、一个、字符串和。字符串。

填充字符串

填充字符串是指向字符串的指定位置填充指定的字符。String类提供PadRight()和PadLeft()方法实现该功能。其中,PadRight()方法在字符串的右边填充字符,PadLeft()方法在字符串的左边填充字符串。由于这两个方法比较相似,下面只将介绍PadLeft()方法。

public string PadLeft(int totalWidth)

上述方法在字符串的左边填充空白字符。totalWidth参数表示填充之后字符串的总长度。该方法返回一个新字符串。

public string PadLeft(int totalWidth,char paddingChar)

上述方法在字符串的左边填充paddingChar字符。totalWidth参数表示填充之后字符串的总长度,paddingChar参数表示被填充的字符。该方法返回一个新字符串。

下面首先创建名称为str1的字符串,它的值为“这是一个字符串。”。然后调用PadLeft()方法在str1对象的左边填充5个A字符。填充之后的字符串,保存为str2对象。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1 = "这是一个字符串";
            string str2 = str1.PadLeft(str1.Length + 5, 'A');   //str1.Length + 5是填充的字符串的长度
            Console.WriteLine("填充的字符串为:" + str2);
            Console.ReadKey();
        }
    }
}

执行填充操作之后,str2对象的值为“AAAAA这是一个字符串。”。

查找字符串

查找字符串是指从字符串中查找指定的字符或子字符串。如果找到,则返回第一个匹配字符或字符串的索引;否则,返回–1。String类提供IndexOf()和LastIndexOf()方法实现该功能。其中,IndexOf()方法是从字符串的第一个字符开始依照从头到尾的方式查找,LastIndexOf()方法从字符串的最后一个字符开始依照从尾到头的方式查找。

由于IndexOf()和LastIndexOf()方法比较相似,

IndexOf()方法语法如下:

public int IndexOf(string value)

上述方法从字符串的开头位置开始查找value是否存在。该方法返回一个整型数值。

public int IndexOf(string value,int startIndex)

上述方法从字符串的指定位置(startIndex参数指定)开始查找value是否存在。该方法返回一个整型数值。

public int IndexOf(string value,int startIndex,int count)上述方法从字符串的指定位置(startIndex参数指定)开始的后面count个字符中查找value是否存在。该方法返回一个整型数值。

下面首先创建名称为str1的字符串,它的值为“这是一个字符串。”。然后调用IndexOf()方法在str1对象中查找“字”。如果找到,在返回第一个匹配项的索引值;否则,返回–1。其中,返回值保存为index变量。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1 = "这是一个字符串";
            int index = str1.IndexOf("符");
            Console.WriteLine("字符串中的 符 索引是{0}",index);
            Console.ReadKey();
        }
    }
}

 

 获取子串

获取子串是指从一个字符串截取一部分。该部分形成一个新的字符串,被称为子串。String类提供Substring()方法实现该功能。

public string Substring(int startIndex)

上述方法获取字符串中从startIndex位置开始的子字符串。startIndex参数指定子字符串开始的位置。该方法返回一个新的字符串。

public string Substring(int startIndex,int length)

上述方法获取字符串中从startIndex位置开始的、最大长度为length的子字符串。startIndex参数指定子字符串开始的位置,length参数指定子字符串的最大长度。该方法返回一个新的字符串。

下面首先创建名称为str1的字符串,它的值为“这是一个字符串。”。然后调用Substring()方法获取从第4个字符开始的、连续2个字符表示的子字符串。获取的子字符串保存为subStr对象。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1 = "这是一个字符串";
            string substr = str1.Substring(4, 2);
            Console.WriteLine("获取字串:" + substr);
            Console.ReadKey();
        }
    }
}

执行获取子字符串操作之后,substr对象的值为“字符”。

格式化字符串

格式化字符串是指将字符串转化为指定格式的字符串。String类提供Format()方法实现该功能。

public static string Format(string format,object arg0)

上述方法将arg0格式化为format表示的形式。format参数表示格式化后的字符串形式,arg0参数表示被格式化的对象。该方法返回一个新的字符串。

public static string Format(string format,params object[] args)

上述方法将args数组中的对象格式化为format表示的形式。format参数表示格式化后的字符串形式,args参数表示被格式化对象的数组。

public static string Format(string format,object arg0,object arg1)

上述方法将arg0和arg1格式化为format表示的形式。format参数表示格式化后的字符串形式,arg0、arg1参数表示被格式化的对象。

public static string Format(string format,object arg0,object arg1,object arg2)

上述方法将arg0、arg1和arg2格式化为format表示的形式。format参数表示格式化后的字符串形式,arg0、arg1、arg2参数表示被格式化的对象。

public static string Format(IFormatProvider provider,string format, params object[] args)

上述方法将args数组中的对象格式化为format表示的形式,同时使用provider参数提供特大的区域格式设置信息。format参数表示格式化后的字符串形式,args参数表示被格式化对象的数组,provider参数提供特大的区域格式设置信息。

注意:Format()方法为string类的静态方法。

下面首先创建名称为str1的字符串,它的值为张三。然后调用Format()方法格式化str1字符串,结果保存为formatstr对象。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1 = "张三";
            string formatstr = string.Format("名称 :{0}", str1);
            Console.WriteLine("格式化字符串 " + formatstr);
            Console.ReadKey();
        }
    }
}

执行格式化操作之后,formatstr对象的值为“名称:张三”。

下面分别来看数字格式化、日期和时间格式化的方法。

1.数字格式化

数字格式化是指将数字转化为指定格式的数字格式字符串。String类提供Format()方法实现该功能。

标准数字格式字符串采用Axx的形式。其中,A为格式说明符,它是一个字母型字符;xx表示精度,它的值是0~99的整数。常用的数字格式说明符主要包括以下8类,具体说明如下

C或c:将数字转换为表示货币金额的字符串。

D或d:将整数数字转换为十进制数字的字符串。

E或e:将数字转换为科学计数法的字符串,即“-d.ddd…E+ddd”或“-d.ddd…e+ddd”形式。

F或f:将数字转换为表示浮点数的字符串,即“-ddd.ddd…”形式。

N或n:将数字转换为“-d,ddd,ddd.ddd…”形式的字符串。

P或p:将数字转换为表示百分比的字符串。

X或x:将整型数字转换为十六进制数字的字符串。

下面创建名称为i的整数,它的值为12345,并调用Format()方法将该整数格式化为“-d,ddd,ddd.ddd…”形式的字符串,结果保存为iString对象。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 12345;
            string iString = String.Format("{0:N0}", i);
            Console.WriteLine("数字格式化:"+iString);
            Console.ReadKey();
        }
    }
}

执行格式化操作之后,iString对象的值为“12,345”。

2.日期和时间格式化

日期和时间格式化是指将日期和时间转换为指定格式的字符串。String类提供Format()方法来实现该功能。常用的日期和时间格式说明符主要包括以下8类,

d:短日期模式,即转换为“MM/dd/yyyy”形式的字符串。

D:长日期模式,即转换为“dddd, dd MMMM yyyy”形式的字符串。

f:完整日期/时间模式(短时间),即表示为长日期和短时间模式的组合,由空格分隔。

F:完整日期/时间模式(长时间),即表示为长日期和长时间模式的组合,由空格分隔。M或m:月模式,表示月份。

t:短时间模式,如表示为“HH:mm”形式的字符串。

T:长时间模式,如表示为“HH:mm:ss”形式的字符串。

y:年模式,表示年份。如“yyyy MM dd”表示“年份(4位整数) 月份(2位整数) 日期(2位整数)”。

下面获取当前时间,并保存为time对象,并调用Format()方法将其格式化“yyyy-MM-dd hh:mm:ss”形式的日期和时间字符串,结果保存为timeString对象。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            DateTime time = DateTime.Now;
            string timeString = String.Format("{0:yyyy-mm-dd hh:mm:ss}", time);
            Console.WriteLine("日期和时间格式化输出:" + timeString);
            Console.ReadKey();
        }
    }
}

 使用可变字符串StringBuilder

StringBuilder类表示的可变字符串是为了方便对同一字符串的频繁操作。可变字符串(由StringBuilder类表示)是一种动态字符串,它是可以被动态修改的。动态修改可变字符串的方法主要包括插入字符串、追加字符串、移除字符串、替换字符串、复制字符串等。

插入字符串StringBuilder

插入字符串是指在字符串是指定位置插入一个新的字符串。

StringBuilder类提供Insert()方法实现该功能。

public StringBuilder Insert(int index,string value)

上述方法将value插入到字符串的index指定的位置。index参数指定插入的位置,value参数表示被插入的字符串。

public StringBuilder Insert(int index,string value,int count)

上述方法将value插入到字符串的index指定的位置,并重复执行该插入count次。index参数指定插入的位置,value参数表示被插入的字符串,count参数指定插入的次数。

下面创建名称为strb的StringBuilder对象,并调用Insert()方法在位置0处插入“插入字符串…”字符串。执行插入操作之后,strb对象的值为“插入字符串…”字符串。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder strb = new StringBuilder();
            strb.Insert(0, "插入字符串…");
            Console.WriteLine(strb);
            Console.ReadKey();
        }
    }
}

追加字符串StringBuilder

追加字符串是指在字符串的末尾追加指定的字符或字符串。StringBuilder类提供Append()、AppendLine()和AppendFormat()方法实现该功能。其中,

AppendLine()方法在追加指定的字符串之后,还追加一个换行符号。

AppendFormat()方法首先格式化被追加的字符串,然后将其追加到字符串。

public StringBuilder Append(char value)

上述方法追加一个字符。value参数表示被追加的字符。

public StringBuilder Append(string value)

上述方法追加一个字符串。value参数表示被追加的字符串。

public StringBuilder Append(char value,int repeatCount)

上述方法追加value字符repeatCount次。value参数表示被追加的字符或字符串,repeatCount参数表示被追加的次数。

public StringBuilder Append(string value,int startIndex,int count)

上述方法追加value字符串中startIndex开始的count个字符组成的字符串。value参数表示被追加的字符或字符串, startIndex参数表示开始位置,count参数表示被追加的字符数量。

下面创建名称为strb的StringBuilder对象,并调用Append()方法追加“这是一个字符串。”。执行追加操作之后,strb对象的值为“这是一个字符串。”字符串。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder strb = new StringBuilder();
            strb.Append("这是一个字符串");
            Console.WriteLine(strb);
            Console.ReadKey();
        }
    }
}

移除字符串StringBuilder

移除字符串是指从字符串中指定位置开始移除其后的指定数量的字符。StringBuilder类提供Remove()方法实现该功能。

public StringBuilder Remove(int startIndex,int length)

上述方法从字符串中startIndex位置处开始移除其后的count个的字符。startIndex参数表示移除的开始位置,count参数表示被移除字符串的最大字符串数量。

下面创建名称为strb的StringBuilder对象,然后执行以下两个操作。

(1)调用Insert()方法在位置0处插入“这是一个字符串。”字符串。

(2)调用Remove()方法从strb对象表示的字符串中的第4个字符开始,移除连续2个字符。执行上述两个操作之后,strb对象的值为“这是一个串。”。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder strb = new StringBuilder();
            strb.Append("这是一个字符串");
            Console.WriteLine("添加后的字符串:" + strb);
            strb.Remove(4, 2);
            Console.WriteLine("移除后的字符串:" + strb);
            Console.ReadKey();
        }
    }
}

替换字符串StringBuilder

替换字符串是指将字符串中指定字符替换为新的字符,或者将指定的字符串替换为新的字符串。

StringBuilder类提供Replace()方法实现该功能。

public StringBuilder Replace(char oldChar,char newChar)

上述方法将oldChar字符替换为newChar字符。oldChar参数表示被替换的字符;newChar参数表示替换后的字符。

public StringBuilder Replace(string oldValue,string newValue)

上述方法将oldValue字符串替换为newValue字符串。oldValue参数表示被替换的字符串;newValue参数表示替换后的字符串。

public StringBuilder Replace(char oldChar,char newChar,int startIndex,int count)

上述方法将字符串中startIndex位置开始的其后count字符中的oldChar字符替换为newChar字符。oldChar参数表示被替换的字符;newChar参数表示替换后的字符;startIndex参数表示一个位置,并从该位置开始的其后的字符或字符串可能被替换;count参数表示startIndex参数指定位置之后的count个字符。

public StringBuilder Replace(string oldValue,string newValue,int startIndex,int count)

上述方法将字符串中startIndex位置开始的其后count字符中的oldValue字符串替换为newValue字符串。oldValue参数表示被替换的字符串;newValue参数表示替换后的字符串;startIndex参数表示一个位置,并从该位置开始的其后的字符或字符串可能被替换;count参数表示startIndex参数指定位置之后的count个字符,即这count个字符组成的字符串中的字符或字符串可能被替换。

下面创建名称为strb的StringBuilder对象,然后执行以下两个操作。

(1)调用Insert()方法在位置0处插入“这是一个字符串。”字符串。

(2)调用Replace()方法将strb对象中的’一’字符替换为’二’字符串。执行上述两个操作之后,strb对象的值为“这是二个字符串。”。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder strb = new StringBuilder();
            strb.Insert(0, "这是一个字符串");
            strb.Replace("一", "二");
            Console.WriteLine(strb);
            Console.ReadKey();
        }
    }
}

复制字符串StringBuilder

复制字符串是指将字符串的内容复制到指定的字符数组中。StringBuilder类提供CopyTo()方法实现该功能。

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

上述方法将字符串中指定位置开始的内容复制到数组destination中。sourceIndex参数指定被复制字符串中的开始位置;destination参数指定将字符复制到的字符数组,用来保存被复制的字符;destinationIndex参数指定保存复制字符的数组中的起始位置;count参数指定被复制字符的数量。

下面创建名称为strb的StringBuilder对象,然后执行以下3个操作。

(1)调用Insert()方法在位置0处插入“这是一个字符串。”字符串。

(2)创建元素类型为char的destChars数组,它的长度等于strb对象的长度。

(3)调用CopyTo()方法将strb对象中的所有字符全部复制到destChars数组。执行上述3个操作之后,destChars数组转换为字符串之后,它的值为“这是一个字符串。”。

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder strb = new StringBuilder();
            strb.Insert(0, "这是一个字符串");
            char[] destChars = new char[strb.Length];
            strb.CopyTo(0, destChars, 0, strb.Length);
            foreach (char i in destChars)
            {
                Console.Write(i + " ");
            }
            Console.ReadKey();
        }
    }
}

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------