目录
[1. length() 求字符串长度](#1. length() 求字符串长度)
[2. isEmpty() 判断字符串是否为空](#2. isEmpty() 判断字符串是否为空)
[3. String对象的比较](#3. String对象的比较)
[3.1 equals() 判断字符串是否相同](#3.1 equals() 判断字符串是否相同)
[3.2 compareTo() 比较字符串大小](#3.2 compareTo() 比较字符串大小)
[3.3 compareToIgnoreCase 忽略大小写比较](#3.3 compareToIgnoreCase 忽略大小写比较)
[4. 字符串查找](#4. 字符串查找)
[4.1 charAt() 返回指定索引处的字符](#4.1 charAt() 返回指定索引处的字符)
[4.2 indexOf()](#4.2 indexOf())
[4.2.1 参数只有一个的时候](#4.2.1 参数只有一个的时候)
[4.2.2 有两个参数的时候](#4.2.2 有两个参数的时候)
[4.3 lastIndexOf()](#4.3 lastIndexOf())
[4.3.1 参数只有一个的时候](#4.3.1 参数只有一个的时候)
[4.3.2 有两个参数的时候](#4.3.2 有两个参数的时候)
[5. 转化](#5. 转化)
[5.1 数值和字符串转化](#5.1 数值和字符串转化)
[5.1.1 数字转字符串 valueof()](#5.1.1 数字转字符串 valueof())
[5.1.2 valueOf() 的其他用法](#5.1.2 valueOf() 的其他用法)
[5.1.3 字符串转数字](#5.1.3 字符串转数字)
[5.2 大小写转换](#5.2 大小写转换)
[5.2.1 toUpperCase() 小写转大写](#5.2.1 toUpperCase() 小写转大写)
[5.2.2 toLowerCase() 大写转小写](#5.2.2 toLowerCase() 大写转小写)
[5.3 字符数组转字符串](#5.3 字符数组转字符串)
[5.4 toCharArray() 字符串转数组](#5.4 toCharArray() 字符串转数组)
[5.5 format() 格式化](#5.5 format() 格式化)
[6.1 replaceFirst()](#6.1 replaceFirst())
[6.2 replaceAll()](#6.2 replaceAll())
[6.3 replace()](#6.3 replace())
[7. split() 字符串拆分](#7. split() 字符串拆分)
[8. substring() 字符串截取](#8. substring() 字符串截取)
[9. trim() 去掉字符串中的左右空格,保留中间空格](#9. trim() 去掉字符串中的左右空格,保留中间空格)
1. length() 求字符串长度
返回值
返回该对象表示的字符序列的长度。
代码示例:
java
String str1 = "hello";
String str2 = "Hello world";
String str3 = "";
System.out.println(str1.length());
System.out.println(str2.length());
System.out.println(str3.length());
输出结果:
2. isEmpty() 判断字符串是否为空
返回值
当字符串长度为0的时候返回 true,否则返回 false
代码示例:
java
String str1 = "hello";
String str2 = "";
System.out.println(str1.isEmpty());
System.out.println(str2.isEmpty());
输出结果:
3. String对象的比较
3.1 equals() 判断字符串是否相同
作用
将此字符串与指定对象进行比较。 其结果是true 当且仅当该参数不是null 并且是String对象,表示相同的字符序列作为该对象。
返回值
如果给定的对象代表一个String等效于这个字符串为true, 否则为false。
代码示例:
java
String str1 = "hello";
String str2 = "hello";
String str3 = "world";
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3));
输出结果:
3.2 compareTo() 比较字符串大小
返回值:
compareTo
方法的返回值是一个整数,它反映了两个字符串的字典顺序关系,具体规则如下:
-
如果调用该方法的字符串(即当前字符串)在字典顺序 上小于 参数字符串,则返回一个负整数。
-
如果两个字符串相等,则返回 0。
-
如果调用该方法的字符串在字典顺序上大于参数字符串,则返回一个正整数。
代码示例:
java
String str1 = "abc";
String str2 = "abc";
String str3 = "def";
System.out.println(str1.compareTo(str2));
System.out.println(str1.compareTo(str3));
输出结果:
3.3 compareToIgnoreCase 忽略大小写比较
与compareTo方式相同,但是忽略大小写比较
代码示例:
java
String str1 = "hello";
String str2 = "Hello";
String str3 = "abcde";
System.out.println(str1.compareToIgnoreCase(str2));
System.out.println(str1.compareToIgnoreCase(str3));
输出结果:
4. 字符串查找
字符串查找也是字符串中非常常见的操作,String类提供的常用查找的方法:
4.1 charAt() 返回指定索引处的字符
作用
返回位于指定索引位置的字符,索引范围 为0至length() - 1 。例如对于字符串"hello"
,charAt(1)
将返回字符'e'
。
代码示例:
java
String str1 = "hello";
System.out.println(str1.charAt(0));
System.out.println(str1.charAt(1));
System.out.println(str1.charAt(2));
System.out.println(str1.charAt(3));
System.out.println(str1.charAt(4));
输出结果:
4.2 indexOf()
4.2.1 参数只有一个的时候
作用
返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符 ,则返回-1。
代码示例:
java
String str1 = "ababcab";
int index1 = str1.indexOf("abc");
int index2 = str1.indexOf("ab");
int index3 = str1.indexOf('b');
int index4 = str1.indexOf("c");
System.out.println(index1);
System.out.println(index2);
System.out.println(index3);
System.out.println(index4);
输出结果:
4.2.2 有两个参数的时候
作用
以指定的下标开始搜索,返回指定字符(或字符串)第一次出现在字符串内的下标。
代码示例:
java
String str1 = "ababcab";
int index1 = str1.indexOf("ab",4);//从str1中下标4位置开始查找
int index2 = str1.indexOf('b',2); //从str1中下标2位置开始查找
System.out.println(index1);
System.out.println(index2);
输出结果:
4.3 lastIndexOf()
4.3.1 参数只有一个的时候
作用
从后往前找,返回指定字符(或字符串)第一次出现的位置,没有返回-1
4.3.2 有两个参数的时候
作用
从fromIndex位置开始找,从后往前找 指定字符(或字符串)第一次出现的位置 ,没有返回-1
代码示例:
java
String str1 = "ababcababcd";
int index1 = str1.lastIndexOf("abc");
int index2 = str1.lastIndexOf("abc",5); //从5位置倒着往回找
int index3 = str1.lastIndexOf('c');
int index4 = str1.lastIndexOf('c',5);//从5位置倒着往回找
System.out.println(index1);
System.out.println(index2);
System.out.println(index3);
System.out.println(index4);
输出结果:
5. 转化
5.1 数值和字符串转化
5.1.1 数字转字符串 valueof()
valueOf的部分重载方法
这些方法都是将数字转化成字符串。
代码示例:
java
String str1 = String.valueOf(1234);
String str2 = String.valueOf(3.14);
System.out.println(str1);
System.out.println(str2);
输出结果:
5.1.2 valueOf() 的其他用法
使用一:
作用
返回 Object参数的字符串形式。
使用二:
作用
返回将char型的字符数组转化为字符串后的形式
使用三:
作用
如果参数为true ,则返回等于"true"的字符串; 否则,等于一个字符串"false"返回。
使用四:
作用
返回 char参数的字符串形式。
5.1.3 字符串转数字
代码示例:
java
int data1 = Integer.parseInt("1234");
double data2 = Double.parseDouble("12.34");
System.out.println(data1);
System.out.println(data2);
输出结果:
5.2 大小写转换
5.2.1 toUpperCase() 小写转大写
代码示例:
java
String s1 = "hello";
String s2 = "Hello";
String ret1 = s1.toUpperCase();
String ret2 = s2.toUpperCase();
System.out.println(ret1);
System.out.println(ret2);
输出结果:
5.2.2 toLowerCase() 大写转小写
代码示例:
java
String s1 = "HELLO";
String s2 = "Hello";
String ret1 = s1.toLowerCase();
String ret2 = s2.toLowerCase();
System.out.println(ret1);
System.out.println(ret2);
输出结果:
5.3 字符数组转字符串
代码示例:
java
char[] array1 = {'a','b','c'};
String str1 = new String(array1);
System.out.println(str1);
输出结果:
5.4 toCharArray() 字符串转数组
作用
将字符串转换为新的字符数组。
代码示例:
java
String s1 = "hello";
char[] array = s1.toCharArray();
System.out.println(Arrays.toString(array));
输出结果:
5.5 format() 格式化
使用指定的格式字符串和参数返回格式化的字符串。
代码示例:
java
String str = String.format("%d-%d-%d",2023,8,7);
System.out.println(str);
输出结果:
6.字符串替换
使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下:
6.1 replaceFirst()
参数
regex - 要匹配此字符串的正则表达式
replacement - 要替换第一个匹配的字符串
作用
-
从原始字符串的开头开始,搜索并找到第一个与正则表达式匹配的子串。
-
将该匹配项替换为指定的新字符串。
-
返回替换后的新字符串。
代码示例:
java
String str = "abcd abcd abcd";
String ret1 = str.replaceFirst("ab","OO");
System.out.println(ret1);
输出结果:
6.2 replaceAll()
参数
regex 参数是一个正则表达式,用于匹配原始字符串中的子串。
replacement 参数是要替换匹配项的新字符串。
作用
-
从原始字符串的开头开始,搜索并找到所有与正则表达式匹配的子串。
-
将每个匹配项都替换为指定的新字符串。
-
返回替换后的新字符串。
代码示例:
java
String str = "abcd abcd abcd";
String ret1 = str.replaceAll("ab","OO");
System.out.println(ret1);
输出结果:
需要注意的是,replaceAll方法使用的是正则表达式进行匹配,因此在使用时需要注意正则表达式的语法和特殊字符的转义。如果不需要使用正则表达式进行匹配,可以考虑使用replace方法来进行简单的字符串替换。
6.3 replace()
重载1
作用
通过用 newChar 字符替换字符串中出现的所有 oldChar 字符,并返回替换后的新字符串。
重载2
将与字面目标序列匹配的字符串的每个子字符串替换为指定的字面替换序列。 替换从字符串开始到结束,例如,在字符串"aaa"中用"b"替换"aa"将导致"ba"而不是"ab"。
参数
target - 要替换的char值序列
replacement - char值的替换顺序
代码示例:
java
String str = "abcd abcd abcd";
String ret1 = str.replace("ab","OO");
String ret2 = str.replace('a','A');
System.out.println(ret1);
System.out.println(ret2);
输出结果:
7. split() 字符串拆分
可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串。 可用方法如下:
重载方法1:
作用
-
从原始字符串中找到所有与分隔符匹配的子串,并根据分隔符将原始字符串分割成多个子串。
-
将这些子串存储在一个字符串数组中。
-
返回该字符串数组。
代码示例1:
java
String str = "hello abc world";
String[] ret = str.split(" ");
for (int i = 0; i < ret.length; i++) {
System.out.println(ret[i]);
}
输出结果1:
代码示例2:拆分IP地址
java
String str = "192.168.1.1";
String[] ret = str.split("\\.");
for (int i = 0; i < ret.length; i++) {
System.out.println(ret[i]);
}
输出结果2:
代码示例:
java
String str = "name=zhangsan&age=10";
String[] ret = str.split("=|&"); //用=和&分割
for (int i = 0; i < ret.length; i++) {
System.out.println(ret[i]);
}
输出结果3
注意事项:
字符**"|","*","+"都得加上转义字符**,前面加上 "\\"
而如果是 "\\" ,那么就得写成 "\\\\"
3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符
代码示例3: 多次拆分
结果和上面输出结果3相似。
重载方法2:
作用
-
从原始字符串中找到与正则表达式匹配的子串。
-
将原始字符串分割成多个子串,每个子串都保存在数组中。
-
只保存前limit-1个子串,如果limit为负数或为零,则不限制分割数。
-
将剩余的未分割的部分作为数组的最后一个元素保存。
代码示例:
java
String str = "hello abc world";
String[] ret = str.split(" ",2);//限制分割组数为2组
for (int i = 0; i < ret.length; i++) {
System.out.println(ret[i]);
}
输出结果:
8. substring() 字符串截取
从一个完整的字符串之中截取出部分内容。可用方法如下:
代码示例:
java
String str = "abcdefg";
String ret1 = str.substring(0,3); //截取下标0~2字符串
String ret2 = str.substring(3); //截取下标3以后的字符串
System.out.println(ret1);
System.out.println(ret2);
输出结果:
注意事项:
-
索引从0开始
-
注意前闭后开区间的写法, substring(0, 5) 表示包含 0 号下标的字符, 不包含 5 号下标
9. trim() 去掉字符串中的左右空格,保留中间空格
代码示例:
java
String str = " abcde fg hijk ";
System.out.println(str);
System.out.println(str.trim());
输出结果: