C#复制字符串(Copy()和CopyTo())
C# 的 string 类提供了 Copy() 和 CopyTo() 方法,用于将字符串或字符串的一部分复制到另一个字符串或 Char 类型的数组中,下面分别进行讲解。
值得一提的是,Copy() 方法是静态方法,可以使用 string 类直接调用。
例如,定义一个字符串 strOld,并初始化为“Keep on going never give up”,然后使用 Copy() 方法将该字符串的值复制到 strNew 中,代码如下。
当参数 sourceIndex、destinationIndex 或 count 为负数,参数 count 大于从 startIndex 到此字符串末尾的子字符串的长度,或者参数 count 大于从 destinationIndex 到 destination 末尾的子数组的长度时,则引发 ArgumentOutOfRangeException 异常(当参数值超出调用的方法所定义的允许取值范围时引发的异常)。
例如,声明一个字符串,并初始化为“Do one thing at a time,and do well.”,然后使用 CopyTo() 方法将该字符串中的“time”复制到一个字符数组中,并输出这个字符数组,代码如下。
注意,在将字符串的一部分复制到字符数组中时,字符数组必须已经进行了初始化。如果没有进行初始化,例如将上面代码修改成如下形式:
图:字符数组未初始化时出现的错误提示
Copy()方法
Copy() 方法用于创建一个与指定的字符串具有相同值的字符串,其语法格式如下:public static string Copy (string str)
- str:要复制的字符串。
- 返回值:与 str 具有相同值的字符串。
值得一提的是,Copy() 方法是静态方法,可以使用 string 类直接调用。
例如,定义一个字符串 strOld,并初始化为“Keep on going never give up”,然后使用 Copy() 方法将该字符串的值复制到 strNew 中,代码如下。
string strOld = "Keep on going never give up"; string strNew = string.Copy(strOld); //复制字符串上面代码中的 strOld 和 strNew 的值最终都是“Keep on going never give up”。
CopyTo()方法
CopyTo() 方法用来将字符串的某一部分复制到另一个字符数组中,其语法格式如下:public void CopyTo(int sourceIndex,char[] destination,int destinationIndex, int count)
- sourceIndex:要复制的字符的起始位置。
- destination:目标字符数组。
- destinationIndex:指定目标数组中的开始存放位置。
- count:指定要复制的字符个数。
当参数 sourceIndex、destinationIndex 或 count 为负数,参数 count 大于从 startIndex 到此字符串末尾的子字符串的长度,或者参数 count 大于从 destinationIndex 到 destination 末尾的子数组的长度时,则引发 ArgumentOutOfRangeException 异常(当参数值超出调用的方法所定义的允许取值范围时引发的异常)。
例如,声明一个字符串,并初始化为“Do one thing at a time,and do well.”,然后使用 CopyTo() 方法将该字符串中的“time”复制到一个字符数组中,并输出这个字符数组,代码如下。
static void Main(string[] args) { string str = "Do one thing at a time,and do well.";//声明一个字符串变量并初始化 char[] charsString = new char[4]; //定义字符数组 //将字符串中的"time"复制到字符数组中 str.CopyTo(str.IndexOf("time"), charsString, 0, 4); Console.WriteLine(charsString); //输出字符数组中的内容 Console.ReadLine(); }运行上面代码,字符数组 charsString 的值为“time”。
注意,在将字符串的一部分复制到字符数组中时,字符数组必须已经进行了初始化。如果没有进行初始化,例如将上面代码修改成如下形式:
string str = "Do one thing at a time,and do well.";//声明一个字符串变量并初始化 char[] charsString = null; //定义字符数组 str.CopyTo(str.IndexOf("time"), charsString, 0, 4); //将字符串中的"time"复制到字符数组中运行上面代码,将会出现下图所示的错误提示:
图:字符数组未初始化时出现的错误提示