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

C# 字符串之 Split()、Join()使用

2014-08-22 11:47 120 查看
很多时候处理字符串数据,比如从文件中读取或者存入-我们可能需要加入分隔符(如CSV文件中的逗号),或使用一个分隔符来合并字符串序列。

很多人都知道使用split()的方法,但使用与其对应的Join()方法的人就没有那么多。今天,让我们看看它们的应用。

Split()–根据分隔符切割字符串成几部分

分割符可以是以下几种形式中的一种:

只有一个字符的数组:

比方对于“A,B,C,D,E,F”可以使用‘,’或者new[]{‘,’}

有多个字符的数组:

比方对于“A,B-C,D*E,F”使用new[]{‘,’‘-‘‘*’}:

只有一个字符串的数组:

比方对于“A=>B=>C=>D=>E=>F”new[]{“=>”}

有多个字符串的数组:

比方对于“A=>B<=C=>D<=E=>F”使用new[]{“=>”,“<=”}

让我们在实例中看看:

stringtestString=
"JamesHare,1001BroadwayAve,St.Louis,MO,63101";

//传递的分割可以是一个数组

string[]results=testString.Split(new[]{','});

//或者在asp.net4.0下传递单独的一个char

results=testString.Split(',');

得到的结果如下






对待同样的字符串,我们使用‘,’和‘‘(空格):


stringtestString=
"JamesHare,1001BroadwayAve,St.Louis,MO,63101";

//传递一个数组作为分割的标记

string[]results=testString.Split(new[]{',',
''});

//或者在4.0下可以直接这样传递

results=testString.Split(',',
'');

得到下面的结果:





使用string作为分割符用法是基本一样的:

stringtestString="JamesHare,,1001BroadwayAve,St.Louis,MO,63101";
string[]results=testString.Split(new[]{",,"},StringSplitOptions.None);


结果:





注意在这里我们必须要提供一个StringSplitOptions的选择.

这个枚举的类型有两个值:

StringSplitOptions.None:包含返回的数组中的空数组元素.
StringSplitOptions.RemoveEmptyEntries:省略返回的数组中的空数组元素.

最后,Split()有一个形式是让你可以限制返回数组元素数量的.在这种情况下,前面n-1的元素基于你的条件生成,最后一个则是剩下的没有被分割的部分:

stringtestString="JamesHare,,1001BroadwayAve,,,St.Louis,MO,63101";

//返回含有两个元素的数组.

string[]results=testString.Split(new[]{','},2,StringSplitOptions.None);

for(inti=0;i<results.Length;i++)
{
Console.WriteLine("\tElement{0}:\"{1}\"",i,results[i]);
}


使用限制数量的结果是:





注意第二个元素还包含了’,’。

Join()–串联对象数组的各个元素,其中在每个元素之间使用指定的分隔符

参数
separator类型:System.String

要用作分隔符的字符串。
values类型:System.Object[]

一个数组,其中包含要连接的元素。
返回值
类型:System.String

一个由values的元素组成的字符串,这些元素以separator字符串分隔。

看下面的例子,用StringBuilder来实现串联一组字符串:

string[]parts={"Apple","Orange","Banana","Pear","Peach"};

varbuilder=newStringBuilder();

for(inti=0;i<parts.Length;i++)
{
builder.Append(parts[i]);

//将最后一个','去掉

if(i!=parts.Length-1)
{
builder.Append(",");
}
}

//结果是"Apple,Orange,Banana,Pear,Peach"

varresult=builder.ToString();



string.Join()可以轻松实现:



string[]parts={"Apple","Orange","Banana","Pear","Peach"};
varresult=string.Join(",",parts);



很多人可以没有意识到Join()可以合并任何类型,如int,DateTime,
double
,或其他自定义的类型!

当调用string.Join()合并非字符串的数值时,它实际上会让每一个元素ToString().也就是说这些元素ToString()的定义是符合你的需求的才行–虽然大部分asp.net库中的类型都已经有了.

举例子:



//合并整型"1,2,3,4,5,6,7,8,9,10"

varnumsFromOneToTen=string.Join(",",Enumerable.Range(1,10));

//合并不同类型的数值==>"1-3.1415927-9/16/201112:52:22PM"

varvariousObjects=string.Join("-",newobject[]{1,3.1415927,DateTime.Now});


最后,Join()明显是支持IEnumerable<T>和object[],string[]:



string[]arr={"one","two","three"};
Console.WriteLine(string.Join(",",arr));

//.net4.0中你可以直接列出所有数值,不必要生成数组
varnumsFromOneToTen=string.Join(",","A","B","C","D","E");

varvariousObjects=string.Join("-",1,3.1415927,DateTime.Now);


结论

如果你想将一个字符串分割或者串联一些元素到一个字符串,想想能否用Split()Join().它们在很多方面都非常有用.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: