String的split方法
2017-11-07 18:08
239 查看
在java.lang包中有String.split()方法,返回是一个数组。
String.split(“\.”),这样才能正确的分隔开,不能用String.split(“.”);
如果用“|”作为分隔的话,必须是如下写法:
String.split(“\|”),这样才能正确的分隔开,不能用String.split(“|”);
的子字符串按它们在此字符串中的顺序排列。如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。
一些特殊的字符可能会出现你预想不到的结果,比如测试下面的代码:
,+ * 不是有效的模式匹配规则表达式,用”\*” “\+”转义后即可得到正确的结果。
string s=”abcdeabcdeabcde”;
string[] sArray=s.Split(‘c’) ;
foreach(string i in sArray) Console.WriteLine(i.ToString());
输出下面的结果:
ab
deab
deab
de
第二种方法: 我们看到了结果是以一个指定的字符进行的分割。使用另一种构造方法对多个字符进行分割:
可以输出下面的结果:
第三种方法:
除了以上的这两种方法以外,第三种方法是使用正则表达式。新建一个控制台项目。
然后先添加 using System.Text.RegularExpressions;
输出下面的结果:
第四种方法:
第五种方法:
string str1=”我是*一个教*师“;
我希望显示的结果为:我是一个教师。 我如果采用上面的第四种方法来做就会产生下面的错误:我 是一个教师。中间有空格输出,所以输出结果并不是希望的结果,这就又回到了正则表达式了,这时可以采用下面的第五种方法:
这里通过[*]+ 巧妙的完成了我们的目标。
1、“.”和“|”都是转义字符,必须得加”\”;
如果用“.”作为分隔的话,必须是如下写法:String.split(“\.”),这样才能正确的分隔开,不能用String.split(“.”);
如果用“|”作为分隔的话,必须是如下写法:
String.split(“\|”),这样才能正确的分隔开,不能用String.split(“|”);
2、如果在一个字符串中有多个分隔符,可以用“|”作为连字符
比如:“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split(“and|or”);3、public String[] split(String regex,int limit)根据匹配给定的正则表达式来拆分此字符串。
此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止。数组中的子字符串按它们在此字符串中的顺序排列。如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。
4、public string[] split(string regex)
这里的参数的名称是 regex ,也就是 regular expression (正则表达式)。这个参数并不是一个简单的分割用的字符,而是一个正则表达式,一些特殊的字符可能会出现你预想不到的结果,比如测试下面的代码:
(1) 用竖线 | 分隔字符串,你将得不到预期的结果
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异常,用加号 + 也是
String[] aa = "aaa*bbb*ccc".split("*"); //String[] aa = "aaa|bbb|ccc".split("\\*"); 这样才能得到正确的结果 for (int i = 0 ; i <aa.length ; i++ ) { System.out.println("--"+aa); }
,+ * 不是有效的模式匹配规则表达式,用”\*” “\+”转义后即可得到正确的结果。
(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 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;
using 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());
这里通过[*]+ 巧妙的完成了我们的目标。
相关文章推荐
- String的split方法与正则表达式
- String的split(String regex, int limit)方法小结
- java.lang.String的substring、split方法引起的内存问题
- C#的String.Split方法
- C#的String.Split 方法
- String的Split方法简单使用和Jsoup获取url文档
- String的split()方法探索和大揭秘
- 关于java中String方法split的理解
- javascript中的String对象的split()的方法
- JAVA String操作split方法,以|作为分隔符切割问题
- string.split方法
- java中string对象中的split方法的使用
- String的split()方法探索和大揭秘
- 字符串分割的时候用StringUtils.split()方法代替string自带的split,特殊字符不用转义
- JAVA String.split()方法
- android String.split()方法特殊字符需要添加\\
- java String.split方法是用注意点(转)
- string.Split(params char[])”最匹配的重载方法具有一些无效参数
- String.split()方法的注意点(转义符)
- 使用string.split方法时要注意的问题