处理字符串值是大多数应用程序开发项目不可缺少的一部分。这常常涉及把字符串分析分解为单独的值。例如,接受来自诸如电子表格等外部数据源的数据往往会用到以一些常用格式出现的值,比如用逗号分隔的值。.NET的String类会简化提取逗号之间的各个值的过程。

提取值

String类的Split方法让你能够提取用特定字符分隔的各个值。分隔符的值被传递给方法,后者通过其第二个变体接受用第二个参数被重载,而这个参数用来指定返回的元素的最大数量。(注:你可以指定在一个字符数组里使用一个以上的分隔符。)从字符串提取出来的值被返回到String数组里。

下面是两个变量:

  • C#语言里的String.Split(char[])
  • C#语言里的String.Split(char[], int)

string values = "TechRepublic.com, CNET.com, News.com, Builder.com, GameSpot.com";

string[] sites = values.Split(',');

foreach (string s in sites) {

Console.WriteLine(s);

}

下面就是生成的结果:

TechRepublic.com

CNET.com

News.com

Builder.com

GameSpot.com

你也可以指定多个分隔符,放在一个字符数组里。下面的代码会用逗号、冒号或者分号来分割字符串的值。此外,它用到了可选的第二个参数,把返回的值的最大数量设置为4。

char[] sep = new char[3];

sep[0] = ',';

sep[1] = ':';

sep[2] = ';';

string values = "TechRepublic.com: CNET.com, News.com, Builder.com; GameSpot.com";

string[] sites = values.Split(sep, 4);

foreach (string s in sites) {

Console.WriteLine(s);

}

下面就是生成的结果(注意,第二个参数把字符串剩下的部分放在最后的数组元素里):

TechRepublic.com

CNET.com

News.com

Builder.com; GameSpot.com

尽管Split方法可以让你很容易使用字符串值里的各个元素,但是你可能还是需要根据预先定义的格式(比如用逗号分隔的值)来格式化所有的值。String类使得合成正确格式的字符串变得很容易。

合成字符串

String类的Join方法将用作分隔符的字符接受为第一个参数。要被接在一起的值被当作第二个参数以字符串数组的形式传递。它有一个重载方法签名,能够将整数值接受为第三个和第四个参数。第三个参数用来指定要使用的第一个数组元素,而最后一个参数是要使用的元素的总数。

下面的C#代码示例说明了合成前面示例里字符串值的过程:

string sep = ", ";
string[] values = new String[5];
values[0] = "TechRepublic.com";
values[1] = "CNET.com";
values[2] = "News.com";
values[3] = "Builder.com";
values[4] = "GameSpot.com";
string sites = String.Join(sep, values);
Console.Write(sites);

下面是生成的结果:

TechRepublic.com, CNET.com, News.com, Builder.com, GameSpot.com

元素的起始编号以及返回的最大数量必须是在所使用的字符串数组的范围内。如果这两者都不正确(也就是说,超出了数组的范围),那么就会出现异常。因此,使用try/catch来处理碰到的问题是个好主意。

尽管String类提供了必要的方法,但是它并不是用来分析字符串值的唯一方式。另外一种常用的方式利用的正则表达式。