String类的split方法

虽然使用正则表达式能很好的进行字符串的解析、提取、替换,但是对于一些简单的应用,使用 String 类提供的一些方法就可以很好的完成,最突出的就是 split 方法。

split 方法能够很方便的将字符串按照一定的规则拆分开。

比如对于下面的字符串:

Tom,Jane,Tony,Elva,Gigi

只要调用如下的代码就可以将各个名字提取出来:

String value = "Tom,Jane,Tony,Elva,Gigi";

String[] names = value.split(",");

for(int i=0,n=names.length;i<n;i++)

{

               System.out.println(names[i]);

}

运行结果:

Tom

Jane

Tony

Elva

Gigi

 

看到这个运行结果,很多人都认为 split 方法就是按照给定的字符串对字符串进行拆分,知道碰到了下面的问题。

有一个字符串:中国 . 北京 . 海淀 . 学院路。请解析此字符串,并打印输出“中国 北京 海淀 学院路 ”。

于是写代码如下:

String value = " 中国 . 北京 . 海淀 . 学院路 ";

String[] names = value.split(".");

for(int i=0,n=names.length;i<n;i++)

{

               System.out.print(names[i]+" ");

}

运行结果:

 

对,没看错!没有任何输出!

让我们来看看 split 方法的方法签名吧:

public String[] split(String regex)

这里的参数的名称是 regex ,也就是 Regular Expression (正则表达式)。这个参数并不是一个简单的分割用的字符,而是一个正则表达式,看了 split 方法的实现代码就更坚定了我们的信心:

public String[] split(String regex, int limit) {

               return Pattern.compile(regex).split(this, limit);

}

split 的实现直接调用的 Matcher 类的 split 的方法。读者已经知道,“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。

修改代码如下:

private static void split2()

{

               String value = " 中国 . 北京 . 海淀 . 学院路 ";

               String[] names = value.split("//.");

               for(int i=0,n=names.length;i<n;i++)

               {

                              System.out.print(names[i]+" ");

               }

}

运行结果

中国 北京 海淀 学院路

 

单个字符分割 
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 

多个字符分割(正则表达式
string content="agcsmallmacsmallgggsmallytx"; 
string[]resultString=Regex.Split(content,"small",RegexOptions.IgnoreCase) 
foreach(string i in resultString) 
Console.WriteLine(i.ToString()); 
输出下面的结果:agc 
mac 
ggg 
ytx

实例:

int itemNoOld = Int32.Parse(valOld.Split(new char[] { '.' })[0]);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值