`

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

    JAVA中常用类的常用方法.pdf

    JAVA中常用类的常用方法主要涵盖了java语言中基础类库的关键类以及它们提供的主要方法。以下是针对文档内容的详细解释: 1. java.lang.Object类 Object类是Java中所有类的超类,它提供了多种方法,这些方法在Java中...

    全面解析Java中的String类的使用

    以下是对Java中String类的全面解析,包括其比较方式、字符串常量的本质、以及常用的字符串操作方法。 一、String的比较方式 在Java中,字符串的比较主要通过`equals()`方法和`equalsIgnoreCase()`方法来实现。 1. ...

    String StringBuffer和StringBuilder区别之源码解析

    在Java中,字符串是我们经常使用的数据类型,而String、StringBuffer和StringBuilder是Java中三种常用的字符串类。在这篇文章中,我们将从源码角度对String、StringBuffer和StringBuilder进行深入分析,了解它们之间...

    JAVA常用类的使用方法

    - StringTokenizer 是用来解析字符串成多个子串的工具类,常用构造方法为 `StringTokenizer(String str, String delimiters)`,并提供 `nextToken()` 方法来获取下一个分隔后的子串。 6. **StringBuffer 类**: -...

    string类的常用方法.zip

    这个压缩包"string类的常用方法.zip"包含了一份名为"string类的常用方法.txt"的文档,很显然,它是对`String`类中常见操作的一个介绍。在这篇文章中,我们将深入探讨`String`类的一些重要方法,主要针对C++和Java的`...

    java中Object对象String对象的解析.pdf

    String 对象是 Java 中最常用的对象之一,它用于存储字符串类型的数据。 在 Java 中,Object 对象有一个非常重要的方法,即 equals() 方法。该方法用于比较两个对象是否相等。对于基本数据类型,equals() 方法比较...

    有关Java String常用方法的总结.docx

    ### 有关Java String常用方法的总结 #### 一、String 类概述 `String`类是Java中最基础也是最重要的数据类型之一,在Java中被定义为一个不可变类(immutable class),这意味着一旦一个`String`对象创建之后,其...

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

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

    项目中常用java常用封装类

    String类在Java中是不可变的,这意味着一旦创建了String对象,其内容就不能被修改。因此,我们经常需要创建一些辅助方法来处理字符串,比如去除前后空格、替换特定字符、分割字符串等。例如,可以创建一个`...

    java string类的常用方法详细介绍

    Java中的String类是编程中最常用的类之一,它用于表示不可变的字符序列。在Java中,字符串被视为对象,因此我们可以通过调用String类的各种方法来处理字符串。以下是一些常用的String类方法的详细说明: 1. 构造...

    java中解析json字符串

    总结,Java中解析JSON字符串的方法多样,Jackson和Gson是最常用且功能强大的选项。根据项目的具体需求,可以选择适合的库来处理JSON数据,实现前端与后端的有效通信。在实际开发中,还需要注意处理可能出现的错误,...

    大学课程讲义-Java基础-Java常用类

    本节讲义对Java基础知识中的Java常用类进行了详细的介绍,包括String、StringBuffer、StringBuilder、Date、DateFormat、Random、Math等类的构造方法和常用方法,旨在帮助读者更好地理解和掌握Java基础知识。

    Java String与Byte类型转换

    String是Java中的一个不可变类,用于表示字符串,它是基于Unicode字符集的。Byte类型是Java的八种基本数据类型之一,用于存储8位二进制值,范围是-128到127。 1. **String转Byte**: - **字面量转换**: 直接使用`...

    java常用类的使用方法

    在Java中,Integer 是基本数据类型 int 的包装类,它提供了一些方便的方法来处理整数。Integer 类包含以下主要知识点: 1. **属性**: - `MAX_VALUE`:Integer 类中定义的最大整数值,即 2147483647。 - `MIN_...

    java 解析由String类型拼接的XML文件方法

    Java 解析由 String 类型拼接的 XML 文件方法是一种常用的数据解析方式。在实际开发中,我们经常需要解析 XML 文件来获取其中的数据。今天,我们将分享一篇 java 解析由 String 类型拼接的 XML 文件方法,希望对大家...

Global site tag (gtag.js) - Google Analytics