首页 > 编程笔记

C#复制字符串(Copy()和CopyTo())

C# 的 string 类提供了 Copy() 和 CopyTo() 方法,用于将字符串或字符串的一部分复制到另一个字符串或 Char 类型的数组中,下面分别进行讲解。

Copy()方法

Copy() 方法用于创建一个与指定的字符串具有相同值的字符串,其语法格式如下:
public static string Copy (string 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、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"复制到字符数组中
运行上面代码,将会出现下图所示的错误提示:


图:字符数组未初始化时出现的错误提示

推荐阅读