您的位置:首页 > 编程语言 > C#

C#中的如何:连接和分割字符串

2013-07-12 11:44 239 查看
介绍

当开发程序与外部系统交互是,通常需要以统一的形式处理数据。例如,使用Excel电子表格来处理数据。Excel可以输出一个逗号分隔值(CSV)工作表格式。使用字符串的Split()方法可以提取两个逗号之间的值。相似的,字符串的Join()方法可以从数组使用分隔符连接字符串,例如使用逗号。下面显示如何使用字符串的Split()和Join()方法:

Listing 1:连接和拆分字符串 - StringJoinSplit.cs

using System;

namespace csharp_station.howto{

class StringJoinSplit{

static void Main(string[]
args) {

// 逗号分隔字符串

string commaDelimited =

"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec";

Console.WriteLine("Original Comma Delimited String: /n{0}/n",

commaDelimited);

// 两个逗号之间的分隔线

string[] year = commaDelimited.Split(new char[] {','});

Console.WriteLine("Each individual item: ");

foreach(string month in year)
{

Console.Write("{0} ", month);

}

Console.WriteLine("/n");

// 使用新的分隔符合并字符串

string colonDelimeted = String.Join(":", year);

Console.WriteLine("New Colon Delimited String: /n{0}/n",

colonDelimeted);

string[] quarter = commaDelimited.Split(new Char[] {','}, 3);

Console.WriteLine("The First Three Items: ");

foreach(string month in quarter)
{

Console.Write("{0} ", month);

}

Console.WriteLine("/n");

string thirdQuarter = String.Join("/", year, 6, 3);

Console.WriteLine("The Third Quarter: /n{0}/n", thirdQuarter);

}

}

}

输出结果:

Original Comma Delimited String:

Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec

Each individual item:

Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

New Colon Delimited String:

Jan:Feb:Mar:Apr:May:Jun:Jul:Aug:Sep:Oct:Nov:Dec

The First Three Items:

Jan Feb Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec

The Third Quarter:

Jul/Aug/Sep

上面代码,使用逗号分隔字符串名字为commaDelimited,保存一年十二个月的名称,使用逗号分隔。拆分字符串,使用其他三种分隔符连接字符串,最后连接字符串中的第6为到第8为元素。

Split()方法的简单语法是接收一个字符串数组作为唯一参数,列出的字符串确定什么时候拆分字符串。它返回一个字符串数组,数组中的元素是特殊分隔符之间的值。下面的代码是从列表中第一个拆分符拆分:

string[] year = commaDelimited.Split(new char[] {','});

相同的方式,数组中的元素可以使用Join()方法连接成一个字符串。最简单的重载Join()方法接收两个参数:一个字符串,分隔数组中每个元素;一个要结合的元素数组。Join()是静态方法,需要使用String类型标识符,而不是string实例,执行操作。下面代码从所有的year元素中创建一个字符串,使用冒号分隔:

string colonDelimeted = String.Join(":", year);

重载

这里有一些方法的简单实现,可能比较常用。看看他们的重载方法如何执行一些特殊的操作。

Split()方法有一个带两个参数的重载方法,指定执行拆分的个数。下面代码显示拆分thecommaDelimited字符串到3个元素的数组中:

string[] quarter = commaDelimited.Split(new Char[] {','}, 3);

第一想法,可能认为数组的三个元素可能是Jan, Feb, 和 Mar,实际上不是,第一个元素是Jan,第二个元素是Feb,最后一个元素是剩下的字符串。为了明白,这里输出拆分后数组中的每个元素:

Jan Feb Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec

Join()也有一个重载方法允许提取数组中的部分元素。前两个参数和前面是相同,第三个和第四个参数指定在数组中的位置和读取的元素的个数。下面代码从year数组中创建一个字符串,去第六位到第八位的元素:

string thirdQuarter = String.Join("/", year, 6, 3);

总结

字符串的Split()和Join()方法提供了拆分字符串的功能。Split()方法可以获得从字符串拆分到数组的值,Join()方法可以从数组创建一个带分隔符的字符串。同时支持自定义格式和其他程序进行信息交换。

===============================================================================

最常见的例子是,我们通过相关程序,获得一系列的 int,存在 List<int> 对象中,现在想要转换成 1,2,3 这种用逗号隔开各 int 的字符串(用在 SQL 的 in 中),可用 for 循环来完成,但还有更简单的。

string str = String.Join(",", intList.ConvertAll<string>(new Converter<int, string>(m
=> m.ToString())).ToArray());

用 String.Join 可直接将 List<string>.ToArray() 连接起来,可是我们这里是 List<int>,所以要用 ConvertAll 方法。
由于是转换为 string 类型,所以 ConvertAll 的泛型为 <string>,即 ConvertAll<string>。
ConvertAll<string> 里面跟一个 Converter 对象,结合这里,Converter 泛型为 <int, string>。
Converter 的构造函数参数可以是一个带 int 参数的方法名称,我们这里为了简便,使用的是 Lambda
表达式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: