- string s = "123a223a456a63223sa";
- string[] sArray = s.Split('a');
- MessageBox.Show(sArray[0]);
- MessageBox.Show(sArray[1]);
- MessageBox.Show(sArray[2]);
- MessageBox.Show(sArray[3]);
string s = "123a223a456a63223sa";
string[] sArray = s.Split('a');
int j = 0;
MessageBox.Show(sArray[0]);
MessageBox.Show(sArray[1]);
MessageBox.Show(sArray[2]);
MessageBox.Show(sArray[3]);
这样结果也是
123
223
456
63223s
C#中使用split分割字符串的几种方法
第一种方法:
- string s=abcdeabcdeabcde;
- string[] sArray=s.Split(c) ;
- foreach(string i in sArray)
- Console.WriteLine(i.ToString());
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());
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;
- string content=agcsmallmacsmallgggsmallytx;
- string[]resultString=Regex.Split(content,small,RegexOptions.IgnoreCase)
- foreach(string i in resultString)
- Console.WriteLine(i.ToString());
- //regexOptions.IgnoreCase是不区分small在字符串content中的大小写
输出下面的结果:
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[] 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());
string str1=我**是*****一*****个*****教*****师;
string[] str2 = System.Text.RegularExpressions.Regex.Split(str1,@[*]+);
foreach(string i in str2)
Console.WriteLine(i.ToString());
这里通过[*]+ 巧妙的完成了我们的目标。
例如我想取得一个ftp里的用户名及密码(服务器等)值(用IE当FTP时或从表中取出FTP的值)。
下面是我的解决思路:
设url为收到的URL值,这里指:url=ftp://username:password@server,请注意这句话的规律
我想大家都看清楚这个URL里的规律了吧,就是各个部分都被":"给区分成三个部分,即:ftp、//username、password@server
首先将这个URL的各个部分区分开来,用split(url, ":")
以下是具体的代码:
parts = split(url, ":") '此时parts就有三部分,parts(0)=ftp,parts(1)=//username,parts(2)=password@server'接下来剔除没有用到的信息'由于只取username,所以其中parts(0)跟parts(2)是无用的,直接不引用!newname=replace(parts(1), "//", "") '去除//符号,因为这不是username里的内容'此时的newname既为用户名。
以上是只取用户名的代码,如果你要再取密码的话,可以参考下面。
'由于用户名是属于parts(2)里的,而且包含服务器的信息,如果不取服务器,则:newpass = left(parts(2), instr(parts(2),"@")-1) '取值到@之前的位数。此时的newpass取为密码
以上代码为不取服务器地址的代码,如果有取服务器的话,其实也是很简单的
newparts=split(parts(2),"@") '此时newparts分成两部分:newparts(0)为密码,即password;newparts(1)则为服务器地址,即server'如果要输出密码的的话,直接response.write newparts(0)就可以了,服务器就newparts(1)
后话,对于要取一字符串中的某些字符或部分,只要抓住规律,再加上用split就可以很好做成各种效果。