Java中String.split()用法说明

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

  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); }  (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 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 inresultString) Console.WriteLine(i.ToString());输出下面的结果: agcmacggg 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());这里通过[*] 巧妙的完成了我们的目标。来源:https://www.icode9.com/content-1-828901.html

(0)

相关推荐

  • JS正则表达式完整版

    转自:https://blog.csdn.net/h610443955/article/details/81079439 目录 引言 第一章 正则表达式字符匹配攻略 1 两种模糊匹配 2. 字符组 3 ...

  • Java中String类的concat方法

    在了解concat()之前,首先需要明确的是String的两点特殊性. 长度不可变 值不可变  这两点从源码中对String的声明可以体现: private final char[] value ; ...

  • java中String str=""与new String()的区别

    常量池: 常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据.它包括了关于类.方法.接口等中的常量,也包括字符串常量. 在常量池中存储字符串常量的 ...

  • JAVA中equals的用法

    Object类中的equals方法用于检测一个对象是否等于另一个对象.在Object类中,这个方法判断两个对象是否具有相同的引用,如果两个对象具有相同的引用,它们一定是相等的.从这点上看,将其作为默认 ...

  • C#中string.format用法详解

    String.Format 方法的几种定义: String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项. Str ...

  • 诚之和:Java中String、StringBuffer、StringBuilder的区别是什么

    本篇内容主要讲解"Java中String.StringBuffer.StringBuilder的区别是什么",感兴趣的朋友不妨来看看.本文介绍的方法操作简单快捷,实用性强.下面就让 ...

  • 关于Java中static关键字的用法以及从内存角度解析

    在Java中,static可以用来修饰成员变量和成员方法. 修饰成员变量,称为静态成员方法 修饰静态方法,称为静态成员方法 搞清楚用法和区别之前,先搞清static声明的变量和普通非静态变量在内存的分 ...

  • java中BigDecimal加减乘除基本用法

    Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数. 在实际应用中,需要对更大或者更小的数进 ...

  • Java 中的关键字

    Java 中有多少个关键字,有大小写之分吗? Java 中有 48 个关键字在使用 + 两个保留关键字未使用,共 50 个关键字. Java 关键字全部都由是小写组成. Java 中保留关键字分别是哪 ...

  • Java中的匿名内部类

    一.匿名内部类 之前的所有类都有自己的名字,但是有时候如果某个接口的实现类(或者某个父类的子类)只需要使用一次,此时这样的类如果我们单独定义出来则需要单独为其创建一个"*.java" ...