Java中的String作为一个常用类,提供了一大堆实用的方法。对于那些个熟悉的,平常用的时候自然是信手拈来,不熟悉的你懂滴度娘,事后也没怎么研究过。趁着中午没事儿干今天研究个明天研究个,好好琢磨琢磨并记录下来,以后用的时候且不说会不会用至少不用再问度娘了。好啦,废话说到这,言归正传。
1、substring(int beginIndex):截取字符串
解析:返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引(beginIndex)处的字符开始,直到此字符串末尾。
格式:public String substring(int beginIndex)
参数:
beginIndex - 起始索引(包括)。
返回:指定的子字符串。
抛出异常:
IndexOutOfBoundsException - 如果 beginIndex 为负或大于此 String 对象的长度。
实例:
String subStr="123456789"; //示例1、正常情况:由下面两个例子可以发现下标是从1而不是0开始的 System.out.println(subStr.substring(0));//输出:123456789 System.out.println(subStr.substring(1));//输出:23456789 System.out.println(subStr.substring(subStr.length()));//输出空符串 //示例2、字符超长(直接报错) System.out.println(subStr.substring(subStr.length()+1)); //报错:java.lang.StringIndexOutOfBoundsException: String index out of range: -1 //示例3、输入负数(直接报错,可我怎么听说是反着截取出来的呢,难道是我张冠李戴了?) System.out.println(subStr.substring(-5)); //报错:java.lang.StringIndexOutOfBoundsException: String index out of range: -5
拓展: 对于这个只有一个参数的substring方法,我常用的就是在“需要添加固定后缀或前缀”的时候用,具体怎么用我的这篇里面写的比较清楚:拼接字符串时使用substring方法进行截取避免每次都判断。有需要的可以看看。
2、substring(int beginIndex):截取字符串
解析:返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。
格式:public String substring(int beginIndex,int endIndex)
参数:
beginIndex - 起始索引(包括)。
endIndex - 结束索引(不包括)。
返回:指定的子字符串。
抛出异常:
IndexOutOfBoundsException - 如果 beginIndex 为负,或 endIndex 大于此 String 对象的长度,或 beginIndex 大于 endIndex。
实例:
String subStr="123456789"; //示例1、正常截取:由下面两个例子可以发现下标是从1而不是0开始的 System.out.println(subStr.substring(0, 5));//输出:12345 System.out.println(subStr.substring(1, 5));//输出:2345 System.out.println(subStr.substring(1, subStr.length()));//23456789 //示例2、字符超长(直接报错) System.out.println(subStr.substring(1,subStr.length()+1)); //报错:java.lang.StringIndexOutOfBoundsException: String index out of range: 10 System.out.println(subStr.substring(20,subStr.length())); //报错:java.lang.StringIndexOutOfBoundsException: String index out of range: -11 System.out.println(subStr.substring(20,subStr.length()+1)); //报错:java.lang.StringIndexOutOfBoundsException: String index out of range: 10 //示例3、输入负数 System.out.println(subStr.substring(-5,subStr.length())); //报错:java.lang.StringIndexOutOfBoundsException: String index out of range: -5 System.out.println(subStr.substring(1,-5)); //报错:java.lang.StringIndexOutOfBoundsException: String index out of range: -6 System.out.println(subStr.substring(-10,-10)); //报错:java.lang.StringIndexOutOfBoundsException: String index out of range: -10
3、split(String regex):根据给定正则表达式的匹配拆分此字符串
解析:该方法的作用就像是使用给定的表达式和限制参数 0 来调用两个参数的 split 方法。因此,所得数组中不包括结尾空字符串。
格式:public String[] split(String regex)
参数:
regex - 定界正则表达式
返回:字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的
抛出异常:
PatternSyntaxException - 如果正则表达式的语法无效
实例:
//示例1、进行截取的字符串为空 String str=""; String[] split1 = str.split(";"); System.out.println(split1.length);//输出:1 System.out.println(split1);//输出:[Ljava.lang.String;@1befab0 for(String s:split1){ System.out.println(s);//输出:[空字符串] } //示例2、不给定分隔符 String str2="123456789"; String[] split2 = str2.split(";"); System.out.println(split2.length);//输出:1 System.out.println(split2);//输出:[Ljava.lang.String;@1befab0 for(String s:split2){ System.out.println(s);//输出:123456789 } //从示例1和示例2的输出结果可以看出:分割之后得到的数组长度至少为1,且不管给定的字符串是否有值、是否给定分隔符。 //且数组的值就是给定的字符串全部数据。 //示例3、给定的分隔符不规则 String str3 ="123;456;789"; String[] split3 = str3.split(";"); System.out.println(split3.length);//输出:3 System.out.println(split3);//输出:[Ljava.lang.String;@c2ea3f for(String s:split3){ System.out.println(s);//输出:123 456 789 } //示例4、给定的分隔符规则 String str4 ="123;456;789;"; String[] split4 = str4.split(";"); System.out.println(split4.length);//输出:3 System.out.println(split4);//输出:[Ljava.lang.String;@c2ea3f for(String s:split4){ System.out.println(s);//输出:123 456 789 } //从示例3和示例4的输出结果可以看出:字符串的末尾不管是否以给定的分隔符结尾,对结果都没有影响 //示例5、多个分隔符 String str5 ="123;;;456;789;"; String[] split5 = str5.split(";"); System.out.println(split5.length);//输出:5 System.out.println(split5);//输出:[Ljava.lang.String;@c2ea3f for(String s:split5){ System.out.println(s);//输出:123 [空字符串] 456 789 } //从结果看:字符串中间多个连续的分隔符之间的nothing算作一个空字符串 //示例6、多个分隔符 String str6 ="123;456;789;;;"; String[] split6 = str6.split(";"); System.out.println(split6.length);//输出:3 System.out.println(split6);//输出:[Ljava.lang.String;@c2ea3f for(String s:split6){ System.out.println(s);//输出:123 456 789 } //从结果看:字符串末尾多个连续的分隔符之间的nothing不算作一个空字符串 //示例7、多个分隔符 String str7 ="123;456;789;; ;;"; String[] split7 = str7.split(";"); System.out.println(split7.length);//输出:5 System.out.println(split7);//输出:[Ljava.lang.String;@c2ea3f for(String s:split7){ System.out.println(s);//输出:123 456 789 [空字符串] [空字符串] } //从示例5到示例7的结果可以看出:字符串中间多个连续的分隔符之间的nothing算作一个空字符串; //字符串末尾多个连续的分隔符之间的nothing不算作一个空字符串
总结:
a、分割之后得到的数组长度至少为1,且不管给定的字符串是否有值、是否给定分隔符,且数组的值就是给定的字符串全部数据。
b、字符串的末尾不管是否以给定的分隔符结尾,对结果都没有影响。
c、字符串中间多个连续的分隔符之间的nothing算作一个空字符串;字符串末尾多个连续的分隔符之间的nothing不算作一个空字符串
d、通过split方法分割之后的字符串其分隔符将不再在当前字符串中,譬如:用123@456@789@这个字符串进行分割,得到结果只有123456789,三个@符号没有了。这点需要着重注意。有次在应用中就因为split的这个特性走了好多弯路。
相关推荐
Educoder题目:Java面向对象 - String类答案解析
string类的常用方法在Java编程中,String类无疑是我们最常用到的一个类。无论是用户输入、文件读取还是网络传输,字符串操作无处不在。掌握String类的常用方法,对于提高编程效率和代码质量至关重要。本篇博文将带你...
该类的大部分构造器和方法都已经过时,但是该类使用非常方便,因此目前使用还很普遍,该类的另一个主要功能是,在数据库操作中,它允许将毫秒值表示为SQL DATE值,是数据库操作中java.sql.Date的父类。关于数据库...
资源名称:Java深入解析 透析Java本质的36个话题内容简介:本书分为5 章,分别为“基本概念”,“运算符与表达式”,“String 类”,“方法、构造器与变量”,“类与接口”。通过以上方面介绍那些常见、常用却少为人...
invokeMethod.java 同一个类中调用方法示例 invokeOther.java 类的外部调用方法示例 invokeStaticMethod.java 调用静态方法示例 localVariable.java 演示局部变量 localVSmember.java 局部变量与成员变量同名...
本文包含了一些java的包括String等的常用类,及类的常用方法,并对这些方法的用法和使用效果进行了比较详细的解析,适合入门以及长时间未编写java程序的朋友使用。文章采用多级标题分类的格式,结构一目了然。
本书分为5章,分别为“基本概念”,“运算符与表达式”,“String类”,“方法,构造器与变量”,“类与接口”。 通过以上方面介绍那些常见、常用却少为人知的Java知识。虽然内容相对基本,但都不是容易解答的。目前...
Java中的API,就是JDK提供的具有各种功能的Java类,由于Java类库非常庞大,而且在不断壮大,本文不可能一一介绍所有类的使用方法,读者应该养成查阅Java API文档的习惯,就像查询字典一样,在需要用到某个类的时候...
1. 熟悉Java中的String、StringBuffer、Math、包装器类的使用方法。 2. 使用常用类解决一般性的应用问题。 3. 掌握JavaSE API文档的使用方法。 二、实验内容 1. 编写一个程序,输出一个字符串中的大写英文字母数,...
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其...
WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB...
WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB...
Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架。简单,却很强大!Jodd = Tools IoC MVC DB AOP TX JSON HTML < 1.5 MbJodd 被分成众多模块,按需选择,其中工具类模块有:jodd-core 一些工具类...
API就是一个帮助文档,...JAVA常用API文档包含各种集合、工具类等用法解析,非常适合想对javaAPI有详细了解的人,主要包含String、StringBuilder、Math、System、Object、Objects、BigDecimal等,感兴趣的可以收藏学习
WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道VB...
WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道...
为了在java里也享受xpath的强大与方便但又苦于找不到一款足够强大的xpath解析器,故开发了JsoupXpath。JsoupXpath的实现逻辑清晰,扩展方便,支持几乎全部常用的xpath语法.http://www.cnblogs.com/ 为例 "//a/@href...
WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道...
WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书 Java局域网通信——飞鸽传书源代码,大家都知道...