字符串分割--java中String.split()用法

在java.lang包中有String.split()方法,返回是一个数组。
  一、“.”和“|”都是转义字符,必须得加"\\";
  若是用“.”做为分隔的话,必须是以下写法:
String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
若是用“|”做为分隔的话,必须是以下写法:
String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");

  二、若是在一个字符串中有多个分隔符,能够用“|”做为连字符,好比:“acount=? and uu =? or n=?”,把三个都分隔出来,能够用
  String.split("and|or");

  三、public String[] split(String regex,int limit)根据匹配给定的正则表达式来拆分此字符串。
  此方法返回的数组包含此字符串的每一个子字符串,这些子字符串由另外一个匹配给定的表达式的子字符串终止或由字符串结束来终止。数组中
  的子字符串按它们在此字符串中的顺序排列。若是表达式不匹配输入的任何部分,则结果数组只具备一个元素,即此字符串。

  四、public string[] split(string regex)
  这里的参数的名称是 regex ,也就是 regular expression (正则表达式)。这个参数并非一个简单的分割用的字符,而是一个正则表达式,
他对一些特殊的字符可能会出现你预想不到的结果,好比测试下面的代码: 

(1) 用竖线 | 分隔字符串,你将得不到预期的结果 java

String[] aa = "aaa|bbb|ccc".split("|"); //String[] aa = "aaa|bbb|ccc".split("\\|"); 这样才能获得正确的结果 for (int i = 0 ; i <aa.length ; i++ ) { System.out.println("--"+aa); }正则表达式



(2)用竖 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此。 express

String[] aa = "aaa*bbb*ccc".split("*"); //String[] aa = "aaa|bbb|ccc".split("\\*"); 这样才能获得正确的结果 for (int i = 0 ; i <aa.length ; i++ ) { System.out.println("--"+aa); }数组



(3)显然,+ * 不是有效的模式匹配规则表达式,用"\\*" "\\+"转义后便可获得正确的结果。 
(4) "|" 分隔串时虽然可以执行,可是却不是预期的目的,"\\|"转义后便可获得正确的结果。 
(5)还有若是想在串中使用""字符,则也须要转义.首先要表达"aaaa\bbbb"这个串就应该用"aaaa\\bbbb",若是要分隔就应该这样才能获得正确结果: 
String[] aa = "aaa\\bbb\\bccc".split(\\\\); 
(6) 还有就是点号".",也要首先转义才能获得正确的结果。


第一种方法: 测试

string s="abcdeabcdeabcde"; string[] sArray=s.Split('c') ; foreach(string i in sArray) Console.WriteLine(i.ToString());字符串

输出下面的结果:
ab 
deab 
deab 
de 

第二种方法: 
咱们看到告终果是以一个指定的字符进行的分割。使用另外一种构造方法对多个字符进行分割: string

string s="abcdeabcdeabcde"; string[] sArray1=s.Split(new char[3]{'c','d','e'}) ; foreach(string i in sArray1) Console.WriteLine(i.ToString());it

能够输出下面的结果: 
ab 
ab 
ab 

第三种方法: 
除了以上的这两种方法之外,第三种方法是使用正则表达式。新建一个控制台项目。
而后先添加 using System.Text.RegularExpressions; io

using System.Text.RegularExpressions string content=agcsmallmacsmallgggsmallytx; string[] resultString=Regex.Split(content,small,RegexOptions.IgnoreCase) foreach(string i in resultString) Console.WriteLine(i.ToString());foreach

输出下面的结果: 
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());

这里经过[*]+ 巧妙的完成了咱们的目标。

相关文章
相关标签/搜索