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类答案解析
JAVA中常用类的常用方法主要涵盖了java语言中基础类库的关键类以及它们提供的主要方法。以下是针对文档内容的详细解释: 1. java.lang.Object类 Object类是Java中所有类的超类,它提供了多种方法,这些方法在Java中...
以下是对Java中String类的全面解析,包括其比较方式、字符串常量的本质、以及常用的字符串操作方法。 一、String的比较方式 在Java中,字符串的比较主要通过`equals()`方法和`equalsIgnoreCase()`方法来实现。 1. ...
在Java中,字符串是我们经常使用的数据类型,而String、StringBuffer和StringBuilder是Java中三种常用的字符串类。在这篇文章中,我们将从源码角度对String、StringBuffer和StringBuilder进行深入分析,了解它们之间...
- StringTokenizer 是用来解析字符串成多个子串的工具类,常用构造方法为 `StringTokenizer(String str, String delimiters)`,并提供 `nextToken()` 方法来获取下一个分隔后的子串。 6. **StringBuffer 类**: -...
这个压缩包"string类的常用方法.zip"包含了一份名为"string类的常用方法.txt"的文档,很显然,它是对`String`类中常见操作的一个介绍。在这篇文章中,我们将深入探讨`String`类的一些重要方法,主要针对C++和Java的`...
String 对象是 Java 中最常用的对象之一,它用于存储字符串类型的数据。 在 Java 中,Object 对象有一个非常重要的方法,即 equals() 方法。该方法用于比较两个对象是否相等。对于基本数据类型,equals() 方法比较...
### 有关Java String常用方法的总结 #### 一、String 类概述 `String`类是Java中最基础也是最重要的数据类型之一,在Java中被定义为一个不可变类(immutable class),这意味着一旦一个`String`对象创建之后,其...
string类的常用方法在Java编程中,String类无疑是我们最常用到的一个类。无论是用户输入、文件读取还是网络传输,字符串操作无处不在。掌握String类的常用方法,对于提高编程效率和代码质量至关重要。本篇博文将带你...
String类在Java中是不可变的,这意味着一旦创建了String对象,其内容就不能被修改。因此,我们经常需要创建一些辅助方法来处理字符串,比如去除前后空格、替换特定字符、分割字符串等。例如,可以创建一个`...
Java中的String类是编程中最常用的类之一,它用于表示不可变的字符序列。在Java中,字符串被视为对象,因此我们可以通过调用String类的各种方法来处理字符串。以下是一些常用的String类方法的详细说明: 1. 构造...
总结,Java中解析JSON字符串的方法多样,Jackson和Gson是最常用且功能强大的选项。根据项目的具体需求,可以选择适合的库来处理JSON数据,实现前端与后端的有效通信。在实际开发中,还需要注意处理可能出现的错误,...
本节讲义对Java基础知识中的Java常用类进行了详细的介绍,包括String、StringBuffer、StringBuilder、Date、DateFormat、Random、Math等类的构造方法和常用方法,旨在帮助读者更好地理解和掌握Java基础知识。
String是Java中的一个不可变类,用于表示字符串,它是基于Unicode字符集的。Byte类型是Java的八种基本数据类型之一,用于存储8位二进制值,范围是-128到127。 1. **String转Byte**: - **字面量转换**: 直接使用`...
在Java中,Integer 是基本数据类型 int 的包装类,它提供了一些方便的方法来处理整数。Integer 类包含以下主要知识点: 1. **属性**: - `MAX_VALUE`:Integer 类中定义的最大整数值,即 2147483647。 - `MIN_...
Java 解析由 String 类型拼接的 XML 文件方法是一种常用的数据解析方式。在实际开发中,我们经常需要解析 XML 文件来获取其中的数据。今天,我们将分享一篇 java 解析由 String 类型拼接的 XML 文件方法,希望对大家...