`

java中的String类常用方法解析(一)

    博客分类:
  • Java
阅读更多

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类答案解析.md

    Educoder题目:Java面向对象 - String类答案解析

    深入解析String类:掌握Java中字符串处理的关键方法.zip

    string类的常用方法在Java编程中,String类无疑是我们最常用到的一个类。无论是用户输入、文件读取还是网络传输,字符串操作无处不在。掌握String类的常用方法,对于提高编程效率和代码质量至关重要。本篇博文将带你...

    java常用工具类的使用

    该类的大部分构造器和方法都已经过时,但是该类使用非常方便,因此目前使用还很普遍,该类的另一个主要功能是,在数据库操作中,它允许将毫秒值表示为SQL DATE值,是数据库操作中java.sql.Date的父类。关于数据库...

    Java深入解析透析Java本质的36个话题

    资源名称:Java深入解析 透析Java本质的36个话题内容简介:本书分为5 章,分别为“基本概念”,“运算符与表达式”,“String 类”,“方法、构造器与变量”,“类与接口”。通过以上方面介绍那些常见、常用却少为人...

    Java开发技术大全(500个源代码).

    invokeMethod.java 同一个类中调用方法示例 invokeOther.java 类的外部调用方法示例 invokeStaticMethod.java 调用静态方法示例 localVariable.java 演示局部变量 localVSmember.java 局部变量与成员变量同名...

    常用类及方法详解.docx

    本文包含了一些java的包括String等的常用类,及类的常用方法,并对这些方法的用法和使用效果进行了比较详细的解析,适合入门以及长时间未编写java程序的朋友使用。文章采用多级标题分类的格式,结构一目了然。

    java深入解析

    本书分为5章,分别为“基本概念”,“运算符与表达式”,“String类”,“方法,构造器与变量”,“类与接口”。 通过以上方面介绍那些常见、常用却少为人知的Java知识。虽然内容相对基本,但都不是容易解答的。目前...

    保存java api、常用工具、一般的api试用代码.rar

    Java中的API,就是JDK提供的具有各种功能的Java类,由于Java类库非常庞大,而且在不断壮大,本文不可能一一介绍所有类的使用方法,读者应该养成查阅Java API文档的习惯,就像查询字典一样,在需要用到某个类的时候...

    java 课程 实验

    1. 熟悉Java中的String、StringBuffer、Math、包装器类的使用方法。 2. 使用常用类解决一般性的应用问题。 3. 掌握JavaSE API文档的使用方法。 二、实验内容 1. 编写一个程序,输出一个字符串中的大写英文字母数,...

    java 面试题 总结

    声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其...

    java源码包---java 源码 大量 实例

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    JAVA上百实例源码以及开源项目

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    Java常用工具包Jodd.zip

    Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架。简单,却很强大!Jodd = Tools IoC MVC DB AOP TX JSON HTML < 1.5 MbJodd 被分成众多模块,按需选择,其中工具类模块有:jodd-core 一些工具类...

    JAVA常用API文档 中文完整版PDF

    API就是一个帮助文档,...JAVA常用API文档包含各种集合、工具类等用法解析,非常适合想对javaAPI有详细了解的人,主要包含String、StringBuilder、Math、System、Object、Objects、BigDecimal等,感兴趣的可以收藏学习

    JAVA上百实例源码以及开源项目源代码

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道VB...

    java源码包2

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道...

    Java开源的xpath解析器Jsoupxpath.zip

    为了在java里也享受xpath的强大与方便但又苦于找不到一款足够强大的xpath解析器,故开发了JsoupXpath。JsoupXpath的实现逻辑清晰,扩展方便,支持几乎全部常用的xpath语法.http://www.cnblogs.com/ 为例 "//a/@href...

    java源码包4

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道...

    java源码包3

     WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书  Java局域网通信——飞鸽传书源代码,大家都知道...

Global site tag (gtag.js) - Google Analytics