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

介绍

当开发程序与外部系统交互是,通常需要以统一的形式处理数据。例如,使用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);

第一想法,可能认为数组的三个元素可能是JanFeb 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< intstring>(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 表达式。


你可能感兴趣的:(JOIN,String,C#,Excel,lambda,csv)