C#里 split()方法到底怎么用?

seraph19 2009-01-08 08:38:24
兄弟我初学 C#
split() 括号里如果不带参数,是不是默认为以空格拆分呢?

如果
string a="abc a bb "; //间隔都是两个空格
string[] b=a.split();
数组b 里 共有几个元素? 是6个吗?

我下午试验过, 这样中间 以不止一个空格间隔的字符串 拆分后,数组中有的元素的值为"",就是空字符串.

那么split()方法 到底是怎么来判断拆分字符串的呢?


...全文
1634 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
amtea 2011-02-24
  • 打赏
  • 举报
回复
C# split 使用方法
第一种方法:
string s=abcdeabcdeabcde;
string[] sArray=s.Split(c) ;
foreach(string i in sArray)
Console.WriteLine(i.ToString());
输出下面的结果:
ab
deab
deab
de


第二种方法:
我们看到了结果是以一个指定的字符进行的分割。使用另一种构造方法对多个字符进行分割:
string s=abcdeabcdeabcde
string[] sArray1=s.Split(new char[3]{c,d,e}) ;
foreach(string i in sArray1)
Console.WriteLine(i.ToString());
可以输出下面的结果:
ab
ab
ab


第三种方法:
除了以上的这两种方法以外,第三种方法是使用正则表达式。新建一个控制台项目。然后先添加 using System.Text.RegularExpressions;
System.Text.RegularExpressions
string content=agcsmallmacsmallgggsmallytx;
string[]resultString=Regex.Split(content,small,RegexOptions.IgnoreCase)
foreach(string i in resultString)
Console.WriteLine(i.ToString());
输出下面的结果:
agc
mac
ggg
ytx


第四种方法:
string str1=我*****是*****一*****个*****教*****师;
string[] str2;
str1=str1.Replace(*****,*) ;
str2=str1.Split(*) ;
foreach(string i in str2)
Console.WriteLine(i.ToString());


第五种方法:
string str1=我**是*****一*****个*****教*****师;
我希望显示的结果为:我是一个教师。
我如果采用上面的第四种方法来做就会产生下面的错误:我 是一个教师。中间有空格输出,所以输出结果并不是希望的结果,这就又回到了正则表达式了,这时可以采用下面的第五种方法:
string str1=我**是*****一*****个*****教*****师;
string[] str2 = System.Text.RegularExpressions.Regex.Split(str1,@
  • +
  • );
    foreach(string i in str2)
    Console.WriteLine(i.ToString());
    这里通过
  • + 巧妙的完成了我们的目标。
luxingqiang110 2009-01-09
  • 打赏
  • 举报
回复
split()就是按空格分隔字符串
bobocici 2009-01-09
  • 打赏
  • 举报
回复
private string[] InternalSplitKeepEmptyEntries(int[] sepList, int[] lengthList, int numReplaces, int count)
{
int startIndex = 0;
int index = 0;
count--;
int num3 = (numReplaces < count) ? numReplaces : count;
string[] strArray = new string[num3 + 1];
for (int i = 0; (i < num3) && (startIndex < this.Length); i++)
{
strArray[index++] = this.Substring(startIndex, sepList[i] - startIndex);
startIndex = sepList[i] + ((lengthList == null) ? 1 : lengthList[i]);
}
if ((startIndex < this.Length) && (num3 >= 0))
{
strArray[index] = this.Substring(startIndex);
return strArray;
}
if (index == num3)
{
strArray[index] = Empty;
}
return strArray;
}

这个是保留空格的源代码稍微分析下就好了吧
zhantianyou 2009-01-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 thc1987 的回复:]
C# codeusing System;
class test
{
static void Main()
{
string a="abc a bb";
string[] b=a.Split(new string[]{" "}, StringSplitOptions.None);//以两个空格分开,放在b[]这数组里面
//循环取出数组里面的值
foreach(string s in b)
{
Console.WriteLine(s.ToString());
}
//结果:
//abc
//a

[/Quote]
flh0909 2009-01-09
  • 打赏
  • 举报
回复
注意split()方法返回的是 一个字符串数组
seraph19 2009-01-09
  • 打赏
  • 举报
回复
建议 大家真正动脑 想想我的问题再回答
真正在电脑上试试
虽然我是新手 可是还是觉得回答的不够完善
gbb21 2009-01-09
  • 打赏
  • 举报
回复
StringSplitOptions could kick out the empty string.
white_dos 2009-01-08
  • 打赏
  • 举报
回复
string a="abc a bb ";
a=a.split(" ")
superzxf 2009-01-08
  • 打赏
  • 举报
回复
split有个参数可以选择是否包含空字符串
猿敲月下码 2009-01-08
  • 打赏
  • 举报
回复
using System;
class test
{
static void Main()
{
string a="abc a bb";
string[] b=a.Split(new string[]{" "}, StringSplitOptions.None);//以两个空格分开,放在b[]这数组里面
//循环取出数组里面的值
foreach(string s in b)
{
Console.WriteLine(s.ToString());
}
//结果:
//abc
//a
//bb
}
}
ljm10 2009-01-08
  • 打赏
  • 举报
回复
string a="abc a bb ";
string[] b=a.split(new char[] {' '}); //b[0]=abc,b[1]=a,b[2]=bb,b[3]=""

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧