Java的String类方法详解
- 1. int length() 返回字符串的长度
- 2. char charAt(int index) 返回某索引处的字符
- 3. boolean isEmpty() 判断是否是空字符串
- 4. String toLowerCase() 和 String toUpperCase() 将 String 中的所有字符转换大小写
- 5. String trim() 返回字符串的副本 忽略前导空白和尾部 空白
- 6. boolean equals(Object obj) 比较连个字符串的内容是否相同
- 7. String concat(String str) 将指定字符串连接到此字符串的结尾
- 8. int compareTo(String anotherString) 比较两个字符串的大小
- 9. String substring(int beginIndex) 返回一个新的字符串,从beginIndex 开始截取到最后的一个子字符串
- 10. boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束
- 11. boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始
- 12. boolean contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true
- 13. int indexOf()
- 14. String replace()
- 15. boolean matches(String regex) 告知此字符串是否匹配给定的正则表达式
- 16. String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串
- 17. String与基本数据类型、包装类的转换
- 18. String 与 char[] 的转换
- 19. String与byte[]的转换
1. int length() 返回字符串的长度
String s1 = "Hello World";
System.out.println(s1.length());
输出:11
2. char charAt(int index) 返回某索引处的字符
String s1 = "Hello World";
System.out.println(s1.charAt(0));
输出:H
3. boolean isEmpty() 判断是否是空字符串
String s1 = "Hello World";
String s2 = "";
System.out.println(s1.isEmpty());
System.out.println(s2.isEmpty());
输出:
false
true
4. String toLowerCase() 和 String toUpperCase() 将 String 中的所有字符转换大小写
String s1 = "Hello World";
String s2 = s1.toLowerCase(Locale.ROOT);
System.out.println(s2);
String s3 = s2.toUpperCase(Locale.ROOT);
System.out.println(s3);
输出:
hello world
HELLO WORLD
5. String trim() 返回字符串的副本 忽略前导空白和尾部 空白
String s3 = " Hello World ";
String s4 = s3.trim();
System.out.println("|"+s3+"|");
System.out.println("|"+s4+"|");
输出:
| Hello World |
|Hello World|
6. boolean equals(Object obj) 比较连个字符串的内容是否相同
String s1 = "abc";
String s2 = "abe";
System.out.println(s1.equals(s2));
输出:
false
boolean equalsIgnoreCase(String anotherString) 与 equals 方法类似 忽略大小写
7. String concat(String str) 将指定字符串连接到此字符串的结尾
String s1 = "abc";
String s2 = "abe";
System.out.println(s1.concat(s2));
输出:
abcabe
8. int compareTo(String anotherString) 比较两个字符串的大小
将字符串装成ASCII码,再比较大小
String s1 = "abc";
String s2 = "abe";
System.out.println(s1.compareTo(s2));
输出:
-2 // 大于0,则s1大;小于0,则s2大;等于0,相等
9. String substring(int beginIndex) 返回一个新的字符串,从beginIndex 开始截取到最后的一个子字符串
- String substring(int beginIndex, int endIndex) 返回一个新字符串,从 beginIndex
开始截取到 endIndex
String s1 = "abcdef";
System.out.println(s1.substring(2));
System.out.println(s1.substring(2, 4));
输出:
cdef
cd
10. boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束
String s1 = "abcdef";
System.out.println(s1.endsWith("ef"));
输出:
true
11. boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始
- boolean startsWith(String prefix, int toffset)测试此字符串从指定索引开始的子字符串是否以指定前缀开始
String s1 = "abcdef";
System.out.println(s1.endsWith("ab"));
System.out.println(s1.startsWith("cd", 2));
输出:
true
true
12. boolean contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true
String s1 = "abcdef";
System.out.println(s1.contains("ef"));
System.out.println(s1.contains("ac"));
输出:
true
false
13. int indexOf()
- int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引
- int indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始
String s1 = "abcdefabcdef";
System.out.println(s1.indexOf("f"));
System.out.println(s1.indexOf("f", 6));
5
11
- int lastIndexOf(String str) 返回指定子字符串在此字符串中最右边出现处的索引
- int lastIndexOf(String str, int fromIndex) 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索
String s1 = "abcdefabcdef";
System.out.println(s1.lastIndexOf("a"));
System.out.println(s1.lastIndexOf("a", 4));
System.out.println(s1.lastIndexOf("ad"));
输出:
6
0
-1
14. String replace()
- String replace(char oldChar, char newChar) 返回 一个新的字符串 它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的
String s1 = "abcdefabcdef";
String s2 = s1.replace('a', 'b');
System.out.println(s2);
System.out.println(s1);
输出:
bbcdefbbcdef
abcdefabcdef
- String replace(CharSequence target, CharSequence replacement) 使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串
String s1 = "abcdefabcdef";
String s2 = s1.replace("ab", "ba");
System.out.println(s2);
System.out.println(s1);
bacdefbacdef
abcdefabcdef
- String replaceAll(String regex, String replacement) 使用 给定的replacement 替换此字符串所有匹配给定的正则表达式的子字符串
String s1 = "abcdefabcdef";
String s2 = s1.replaceAll("abc", "cba");
System.out.println(s2);
System.out.println(s1);
cbadefcbadef
abcdefabcdef
- String replaceFirst(String regex, String replacement) 使用 给定的replacement 替换此字符串匹配给定的正则表达式的第一个子字符串
String s1 = "abcdefabcdef";
String s2 = s1.replaceFirst("abc", "cba");
System.out.println(s2);
System.out.println(s1);
cbadefabcdef
abcdefabcdef
15. boolean matches(String regex) 告知此字符串是否匹配给定的正则表达式
String s3 = "123";
// \\d+:表示是否有多个数字组成
boolean matches = s3.matches("\\d+");
System.out.println(matches);
String s4 = "021-3478929";
// 是否是由021-开头组成的7-8为数组
boolean matche = s4.matches("021-\\d{7,8}");
System.out.println(matche);
true
true
16. String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串
String s1 = "java|c++|python";
// 以“|”为分隔符,将字符串切分,返回字符串数组
String[] str = s1.split("\\|");
for (String string : str) {
System.out.println(string);
}
java
c++
python
- String[] split(String regex, int limit) 根据匹配给定的正则表达式来拆分此字符串 最多不超过 limit 个 如果超过了 剩下的全部都放到最后一个元素中
String s1 = "java|c++|python|go|php";
String[] str = s1.split("\\|", 3);
for (String string : str) {
System.out.println(string);
}
java
c++
python|go|php
17. String与基本数据类型、包装类的转换
// string --> 基本数据类型,包装类Integer
String str = "123";
int num = Integer.parseInt(str);
System.out.println(num);
// 基本数据类型--->String
String str1 = String.valueOf(num);
String str2 = num + "";
System.out.println(str1);
System.out.println(str2);
18. String 与 char[] 的转换
- String —> char[]:调用toCharArray()方法
// String 与 char[] 之间的转换
// String ---> char[]
String str = "abc123";
char[] chars = str.toCharArray();
for (char ch : chars) {
System.out.println(ch);
}
- char[]—>String:调用String的char数组构造器
// char[]--->String
char[] chars1 = new char[]{'a', 'b', 'c', '1', '2', '3'};
// 调用String的char数组构造器
String str1 = new String(chars1);
System.out.println(str1);
19. String与byte[]的转换
- String —> byte[]:调用getBytes()
// String ---> byte[]:调用getBytes()
String str = "abc123";
byte[] bytes = str.getBytes();
System.out.println(Arrays.toString(bytes));
String str0 = "abc123中国";
- byte[] —> String :调用String的byte[]造器
// byte[] ---> String :调用String的byte[]造器
byte[] bytes1 = new byte[]{97, 98, 99, 49, 50, 51};
String str2= new String(bytes1);
System.out.println(str2);