Java split用法

java.lang.string.split

split 方法 


将一个字符串分割为子字符串,然后将结果作为字符串数组返回。

stringObj.split([separator,[limit]])

stringObj 


必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。

separator 


可选项。字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽 


略该选项,返回包含整个字符串的单一元素数组。

limit 


可选项。该值用来限制返回数组中的元素个数。

说明: 


split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解 


。separator 不作为任何数组元素的部分返回。

示例1: 


public class SplitDemo { 


    


     public static String[] ss = new String[20];

public SplitDemo() {

String s = "The rain in Spain falls mainly in the plain."; 


         // 在每个空格字符处进行分解。 


         ss = s.split(" "); 


     }

public static void main(String[] args) {

SplitDemo demo = new SplitDemo(); 


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


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


     }

}

程序结果: 


The 


rain 


in 


Spain 


falls 


mainly 


in 


the 


plain.

示例2: 


public class SplitDemo {

public static String[] ss = new String[20];

public SplitDemo() {

String s = "The rain in Spain falls mainly in the plain."; 


         // 在每个空格字符处进行分解。 


         ss = s.split(" ", 2); 


     }

public static void main(String[] args) { 


         SplitDemo demo = new SplitDemo(); 


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


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


     }

}

程序结果: 


The 


rain in Spain falls mainly in the plain.

示例3: 


public class SplitDemo {

public static String[] ss = new String[20];

public SplitDemo() {

String s = "The rain in Spain falls mainly in the plain."; 


         // 在每个空格字符处进行分解。 


         ss = s.split(" ", 20); 


     }

public static void main(String[] args) { 


         SplitDemo demo = new SplitDemo(); 


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


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


     }

}

程序结果: 


The 


rain 


in 


Spain 


falls 


mainly 


in 


the 


plain.

示例4: 


public class SplitDemo {

public static void main(String[] args) {

String value = "192.168.128.33"; 


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


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


             System.out.println(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 的方法。读者已经知道,“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义。 


只要将 


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


改为 


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


就可以了。

输出结果: 


192 


168 


128 


33

再加一点儿补充(这是Java帮助文档中的,更清晰一些):

public String[] split(String regex,int limit)根据匹配给定的正则表达式来拆分此字符串。 


此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止。数组中的子字符串按它们在此字符串中的顺序排列。如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。

limit 参数控制模式应用的次数,因此影响结果数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后项将包含超出最后匹配的定界符的所有输入。如果 n 为非正,则模式将被应用尽可能多的次数,而且数组可以是任意长度。如果 n 为零,则模式将被应用尽可能多的次数,数组可有任何长度,并且结尾空字符串将被丢弃。

例如,字符串 "boo:and:foo" 使用这些参数可生成下列结果:

Regex      Limit                结果

:          2             { "boo", "and:foo" } 


   :          5             { "boo", "and", "foo" } 


   :          -2            { "boo", "and", "foo" } 


   o          5             { "b", "", ":and:f", "", "" } 


   o          -2            { "b", "", ":and:f", "", "" } 


   o          0             { "b", "", ":and:f" }

这种形式的方法调用 str.split(regex, n) 产生与以下表达式完全相同的结果:

Pattern.compile(regex).split(str, n)

参数: 


regex - 定界正则表达式 


limit - 结果阈值,如上所述 


返回: 


字符串数组,根据给定正则表达式的匹配来拆分此字符串,从而生成此数组 


抛出: 


PatternSyntaxException - 如果正则表达式的语法无效 


从以下版本开始: 


1.4

public String[] split(String regex)根据给定的正则表达式的匹配来拆分此字符串。 


该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,结果数组中不包括结尾空字符串。

例如,字符串 "boo:and:foo" 产生带有下面这些表达式的结果:

Regex                 结果 


   :            { "boo", "and", "foo" } 


   o            { "b", "", ":and:f" }

参数: 


regex - 定界正则表达式 


返回: 


字符串数组,根据给定正则表达式的匹配来拆分此字符串,从而生成此数组。 


抛出: 


PatternSyntaxException - 如果正则表达式的语法无效

Java split用法的更多相关文章

  1. Java split()用法

    特殊情况有 * ^ : | . \ 一.单个符号作为分隔符  String address="上海\上海市|闵行区\吴中路"; String[] splitAddress=addr ...

  2. 2016/09/21 java split用法

    public String[] split(String regex) 默认limit为0 public String[] split(String regex, int limit) 当limit& ...

  3. 【转发】Java split()用法

    特殊情况有 * ^ : | . \ 一.单个符号作为分隔符  String address="上海\上海市|闵行区\吴中路"; String[] splitAddress=addr ...

  4. 【转】java list用法示例详解

    转自:http://www.jb51.net/article/45660.htm java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对java list用法做了详解. Lis ...

  5. Java List 用法代码分析 非常详细

    Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对Java List用法做了详解. List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3 ...

  6. Java split方法源码分析

    Java split方法源码分析 public String[] split(CharSequence input [, int limit]) { int index = 0; // 指针 bool ...

  7. Java Enum用法详解

    Java Enum用法详解 用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举 ...

  8. python split() 用法

    字符串的split用法 说明:Python中没有字符类型的说法,只有字符串,这里所说的字符就是只包含一个字符的字符串!!!这里这样写的原因只是为了方便理解,仅此而已. 由于敢接触Python,所以不保 ...

  9. JavaScript中字符串分割函数split用法实例

    这篇文章主要介绍了JavaScript中字符串分割函数split用法,实例分析了javascript中split函数操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了JavaSc ...

随机推荐

  1. ARM7ldr指令与ldr伪指令

    ldr伪指令的第二个操作数之前有个=,意思是第一个操作书 = 第二个操作数,相当明了 核心就在于对于用.word指令在.text段里另外定义一段内存,用ldr r0,[pc + x(可以算出.text ...

  2. Oracle > count(*) / count(0) / count(1) | order by 1, 2

    select count(*), select count(0), select count(1) from table 在统计表的行数时候,经常用到 select count(*) 然而对于行数很多 ...

  3. BZOJ_1020_[SHOI2008]_安全的航线flight_(计算几何+二分)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1020 给出一条航线(折线),给出\(c\)个陆地(多边形).求航线上距离陆地的最近距离最远的距 ...

  4. C语言块内变量回收问题

    之前有一个错误认识,错误的认为局部变量的回收是发生在函数返回时.其实在块结束时块内使用的内容就会被回收了. 以下的实例说明了问题 ]; ; i < ; ++i) { int item = i; ...

  5. 【转】跟着开涛学SpringMVC

    跟着开涛学SpringMVC 第一章源代码下载 博客分类: 跟开涛学SpringMVC 跟开涛学SpringMVC  源代码请到附件中下载. 其他下载: 跟着开涛学SpringMVC 第一章源代码下载 ...

  6. CF GYM 100703L Many questions

    题意:题意真坑……龙要问一系列问题,王子骑士公主分别以一个整数回答,如果王子和公主答案差的绝对值比骑士和公主答案差的绝对值小则说王子和公主的答案更相似,反过来如果前者比后者大则说骑士和公主的答案更相似 ...

  7. 求大于整数m且紧靠m的k个素数 及 判断一个数是否为素数的方法

    题目: 请编写一个函数void fun(int m,int k ,int xx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中. 例如,若输入:17,5,则应输出:19,23 ...

  8. 2、Android应用程序基本特性

    1. apk是android应用程序安装格式,.dex是Android二进制执行文件格式. 2.Android操作系统是基于Linux的多用户操作系统,每一个应用程序都是使用的不同的用户. 3. 默认 ...

  9. HDU 5638 Toposort 线段树+贪心

    题意:bc round 74 分析: 参考下普通的用堆维护求字典序最小拓扑序, 用某种数据结构维护入度小于等于k的所有点, 每次找出编号最小的, 并相应的减少k即可. 这个数据结构可以用线段树, 建立 ...

  10. activemq api的封装

    今天无聊写段代码..学习一下activemq,简单封装了一下activemq 的topic api.跟jdbc很类似 主要代码: import java.io.Serializable; import ...