用split()截取字符串

C#代码 
  1. string s = "123a223a456a63223sa";  
  2.                         string[] sArray = s.Split('a');                        
  3.                         MessageBox.Show(sArray[0]);  
  4.                         MessageBox.Show(sArray[1]);  
  5.                         MessageBox.Show(sArray[2]);  
  6.                         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分割字符串的几种方法

第一种方法:

C#代码 
  1. string s=abcdeabcdeabcde;  
  2. string[] sArray=s.Split(c) ;  
  3. foreach(string i in sArray)  
  4. 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

第二种方法: 我们看到了结果是以一个指定的字符进行的分割。使用另一种构造方法对多个字符进行分割:

C#代码 
  1. string s=abcdeabcdeabcde  
  2. string[] sArray1=s.Split(newchar[3]{c,d,e}) ;  
  3. foreach(string i in sArray1)  
  4. 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

C#代码 
  1. System.Text.RegularExpressions;  
  2. string content=agcsmallmacsmallgggsmallytx;   
  3. string[]resultString=Regex.Split(content,small,RegexOptions.IgnoreCase)   
  4. foreach(string i in resultString)  
  5. Console.WriteLine(i.ToString());
  6. //regexOptions.IgnoreCase是不区分small在字符串content中的大小写

 

输出下面的结果: agc mac ggg ytx

第四种方法:

C#代码 
  1. string str1=我*****是*****一*****个*****教*****师;  
  2. string[] str2;  
  3. str1=str1.Replace(*****,*) ;  
  4. str2=str1.Split(*) ;  
  5. foreach(string i in str2)  
  6. 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=我**是*****一*****个*****教*****师; 我希望显示的结果为:我是一个教师。 我如果采用上面的第四种方法来做就会产生下面的错误:我   是一个教师。中间有空格输出,所以输出结果并不是希望的结果,这就又回到了正则表达式了,这时可以采用下面的第五种方法:

C#代码 
  1. string str1=我**是*****一*****个*****教*****师;  
  2. string[] str2 = System.Text.RegularExpressions.Regex.Split(str1,@[*]+);   
  3. foreach(string i in str2)  
  4. 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就可以很好做成各种效果。

http://www.blogjava.net/AndyZhang/archive/2012/04/25/376616.html

posted @ 2012-06-09 20:32  我心微凉  阅读(1999)  评论(0)    收藏  举报