关闭

JAVA String.split()方法

200人阅读 评论(0) 收藏 举报
分类:

在java.lang包中有String.split()方法,返回是一个数组

我在应用中用到一些,给大家总结一下,仅供大家参考:

1、如果用“.”作为分隔的话,必须是如下写法,String.split("\\."),这样才能正确的分隔开,不能用String.split(".");

2、如果用“|”作为分隔的话,必须是如下写法,String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");

“.”和“|”都是转义字符,必须得加"\\";

3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如,“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("and|or");

使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。 

我们看jdk doc中说明  

public String[] split(String regex)

 Splits this string around matches of the given regular expression. 

参数regex是一个 regular-expression的匹配模式而不是一个简单的String,他对一些特殊的字符可能会出现你预想不到的结果,比如测试下面的代码用竖线 | 分隔字符串,你将得不到预期的结果

 

复制代码
   String[] aa = "aaa|bbb|ccc".split("|");

    //String[] aa = "aaa|bbb|ccc".split("\\|"); 这样才能得到正确的结果

    for (int i = 0 ; i <aa.length ; i++ ) {

      System.out.println("--"+aa[i]); 

    } 
复制代码

 

用竖 * 分隔字符串运行将抛出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[i]); 

    }  
复制代码

 

显然, + * 不是有效的模式匹配规则表达式,用"\\*" "\\+"转义后即可得到正确的结果。

"|" 分隔串时虽然能够执行,但是却不是预期的目的,"\\|"转义后即可得到正确的结果。

还有如果想在串中使用"\"字符,则也需要转义.首先要表达"aaaa\bbbb"这个串就应该用"aaaa\\bbbb",如果要分隔就应该这样才能得到正确结果,

String[] aa = "aaa\\bbb\\bccc".split("\\\\");
0
0
查看评论

C#的String.Split方法之6个重载函数

 C#编程中,字符串String.Split方法经常用到,飘易在这里做个摘抄,以备后用String.Split方法有6个重载函数: 1) public string[] Split(params char[] separator)...
  • make1828
  • make1828
  • 2011-06-08 11:25
  • 1071

java中String.split()的常用方法

String.split()函数将一个字符串分割为子字符串,然后将结果作为字符串数组返回。在字符串处理中,经常会有这样的应用场景,即我们需要将原字符串分隔成若干个更小的单位,以便我们接下来的计算,这时候就要用到split()函数了,它一般有下面几种常用的使用情景: 1.以空格作为分隔符 比如 Str...
  • ls5718
  • ls5718
  • 2016-06-21 15:10
  • 2866

[Java]_[初级]_[String的split里的坑]

场景: 1. 有时候需要使用某些字符来作为值的合并存储,比如以@作为分隔符, 232332@232323@323232, 用一个属性存储这3个值, 用的时候再拿出来split就可以了. 2. 问题是有时候某个值会缺失,比如第一个值没有的情况, @232323@323232 第2,3个值没有的情况 ...
  • infoworld
  • infoworld
  • 2015-07-12 22:02
  • 1655

java String.split()使用注意点和问题

在java.lang包中有String.split()方法的原型是: public String[] split(String regex, int limit) split函数是用于使用特定的切割符(regex)来分隔字符串成一个字符串数组,函数返回是一个数组。在其中每个出现regex的位置都...
  • zhao50632
  • zhao50632
  • 2015-08-17 13:59
  • 3750

关于Java中String类的split(String regex)方法的一点困惑

 关于Java中String类的split(String regex)方法的一点困惑在JDK中文API里面对这个类有如下描述:public String[] split(String regex)根据给定的正则表达式的匹配来拆分此字符串。 该方法的作用就像是使用给定的表达式和限制...
  • zhoufoxcn
  • zhoufoxcn
  • 2006-08-29 19:23
  • 4904

Java String Split 方法小记录-源代码分析

对于初学者来说,String 的 split 隐藏着许多不为人知的秘密,不多BB,上菜吧   public static void main(String[]args){ String str[] = ",,".split("&quo...
  • tingyingg
  • tingyingg
  • 2017-02-18 18:42
  • 1450

String.split()方法想用"."分隔的写法

String str = "t.tt"; String[] strs = str.split("\\."); System.out.println(strs.length);先记下来以后再找原因
  • chen517611641
  • chen517611641
  • 2014-10-16 16:49
  • 4141

java String.split()方法学习笔记

出处:http://swiftlet.net/archives/709 文章主要给我们展示了split对不同字符串的分割效果。 结论如下: 作为分隔符号的内容不会存在与方法返回的数组中。即分隔符号会被去掉。 分隔符号前面的内容会作为数组的内容返回。所以当分隔符号在字符串尾端时,如“a-b-”...
  • jbscuthua
  • jbscuthua
  • 2016-03-17 13:36
  • 185

JAVA String.split() 方法浅析

它是java.lang包中的String.split()方法,返回是一个数组 我在应用中用到一些,给大家总结一下,仅供大家参考: 1、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(&...
  • rqrtqqpqi5
  • rqrtqqpqi5
  • 2017-03-06 17:29
  • 83

关于JAVA string.split()方法。

今日由于工作需求,做了一些截取拼接URL的操作,频繁用到split(),  结果报错PatternSyntaxException,看方法描述后得知这个方法其实要求传的是正则,方法描述如下: String[] java.lang.String.split(Strin...
  • Encode_myself
  • Encode_myself
  • 2015-03-24 15:02
  • 291
    个人资料
    • 访问:26560次
    • 积分:1138
    • 等级:
    • 排名:千里之外
    • 原创:83篇
    • 转载:24篇
    • 译文:0篇
    • 评论:6条
    最新评论