`

http://blog.csdn.net/daxiang_zhang/archive/2008/03

    博客分类:
  • java
阅读更多
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数据库课程设计

    ### Java数据库课程设计知识点 #### 一、课程设计目的与要求 **1.1 目的** - **理论联系实际**:将所学的数据库理论知识应用于实践,增强理解和记忆。 - **掌握基本技能**:熟悉数据库管理和软件设计的基础方法。...

    DocDown3百度文库免账号下载源码c#

    5. **C#编程**:作为.NET框架的主要语言,C#在这里发挥了关键作用,用于构建整个下载程序。 在【压缩包子文件的文件名称列表】中,"DocDown3百度免账号下载源码c#"很可能是项目的源代码包,包含了该项目的所有源...

    Groovy中文教程.pdf

    - 获取稳定版本的Groovy非常简单:访问Groovy的官方网站 `http://groovy.codehaus.org`,点击“Download”链接进行下载。用户可以选择下载 **二进制版本(binary release)** 或者 **源码版本(source release)** 。...

    fck嵌入JAVA

    在IT领域,FCKeditor(现已更名为CKEditor)是一款非常著名的开源富文本编辑器,它允许用户在网页上创建和编辑HTML内容。本篇将详细探讨如何在Java应用中嵌入FCKeditor以及相关的技术要点。 一、FCKeditor简介 ...

    操作word的表格

    在IT行业中,处理文档是日常工作中常见的任务,尤其是在编程领域。Java作为一种强大的编程语言,提供了多种库和工具来处理Microsoft Word文档,包括读取、创建和编辑Word文档中的表格。以下将详细介绍如何使用Java来...

    串口调试助手(包含源代码)

    C#的.NET Framework提供了一套完整的串口通信API,即System.IO.Ports命名空间,使得串口操作变得简单易行。WinForm作为Windows应用程序开发的UI框架,提供了丰富的控件和事件处理机制,方便构建用户友好的界面。 在...

    微生理系统,全球前26强生产商排名及市场份额(by QYResearch).docx

    14. **Beijing Daxiang Biotech** 15. **Altis Biosystems** 16. **Cherry Biotech** 17. **Bi/ond** 18. **Obatala Sciences** 19. **Ananda Devices** 20. **ImmuONE** 21. - 26. 其他较小的市场参与者 2022年,...

    PB程序中生成MD5动态库md5.dll

    简单示例: Public Function long snmd5 (ref string r,ref string s) LIBRARY "md5.dll" ALIAS FOR "snMd5;ANSI" //////////////MD5加密动态库函数 string ls_md5 ls_md5 = space(100) snmd5(ls_md5,as_data) ...

    毕业论文jsp48客户管理系统(jsp+mysql).doc

    大湘房产客户管理系统(Daxiang Real Estate Customer Management System)是基于现代计算机技术,旨在提升房地产行业的客户关系管理效率和规范性。它利用B/S(Browser/Server)架构,通过JSP(Java Server Pages)...

    java面试考题(2015年)

    【Java面试知识点】 Java是广泛使用的面向对象编程语言,面试中常常会涉及到以下几个核心知识点: 1. **接口声明**:在Java中,我们使用`interface`关键字来声明一个接口。接口是Java中的一种抽象类型,它包含常量...

    C#局域网语音聊天(点对点)

    在C#中,可以使用System.Net命名空间下的类来处理TCP/IP协议,如Socket类,用于创建客户端和服务器之间的连接。在点对点通信中,每个参与者既是客户端也是服务器,因此我们需要实现双向通信。 1. **套接字编程**:...

    C#显示动态柱状图

    在C#编程中,动态显示柱状图是一种常见的数据可视化技术,尤其在实时数据分析和监控应用中非常实用。本文将详细讲解如何使用C#来实现柱状图的动态显示,并结合定时器控制其变化。 首先,我们需要理解柱状图的基本...

    器官芯片,全球前10强生产商排名及市场份额.pdf

    其他值得关注的企业有Xona Microfluidics、SynVivo、Bi/ond、Netri、Beijing Daxiang Biotech、Else Kooi Laboratory、Cherry Biotech SAS、Altis Biosystems等,它们也在不断创新和发展中。 QYResearch作为全球...

    多种数据库操作示例

    编译环境:VS2008+Win7 数据源: SQL Server 2005,Oracle 10g,Access 2003,Excel 2003,CSV,Xml 功能: 查看所有数据:读取数据表中所有数据显示在DataGridView中 查看学生总数:显示数据库中学生总数 插入一...

    struts1jar包

    当用户发送一个HTTP请求时,ActionServlet拦截请求,根据struts-config.xml中的配置找到对应的ActionMapping,调用相关的Action,Action执行完毕后通过ActionForward指定响应的JSP页面。JSP页面负责显示结果,整个...

    struts1.2 + spring2.5 + hibernate3.2框架demo

    首先,Struts1.2框架的核心是ActionServlet,它作为MVC模式中的控制器,接收HTTP请求并调用相应的Action类来处理业务逻辑。ActionForm对象用于封装请求参数,Action转发或重定向到不同的JSP视图。Struts1.2通过配置...

    fck文档+jar包

    而`jar`包,全称为Java Archive,是Java平台上的可执行文件格式,用于集合多个类文件、相关的资源文件(如图片、样式表等)以及元数据。FCKjar包,很可能是指包含了FCK编辑器所有必要组件的Java库,开发者可以将这个...

    大整数加减法C/C++源代码

    文件提供了大整数加减法源代码,已在visual C++2.0上编译通过

    jsp.el表达式.txt

    el表达式,jsp.el表达式,页面el表达式,el表达式注释 el表达式的解释,el表达式的应用,java el表达式

Global site tag (gtag.js) - Google Analytics