String是Java中很常用的一个类,熟练掌握这个类中的方法可以使我们的开发变得更加高效。
目录
一 构造方法
1.根据字符数组 value 构造
new String(char[] value)
char[] chars = {'h','e','l','l','o'};
String str1 = new String(chars);
System.out.println(str1);
2. 根据字符数组的下标范围构造字符串
new String(char[] value, int offset, int count), [offset,count)注意是前闭后开区间
char[] chars = {'h','e','l','l','o'};
//2.new String(char[] value, int offset, int count),
//根据字符数组的下标范围[offset,count)构造字符串
String str2 = new String(chars, 0, 2);
System.out.println(str2);
二 常用方法
1. 根据索引查找该位置字符
char charAt(int index)
获取指定索引位置的字符,索引位置从0开始
// 获取下标为 0 位置的字符
char char1 = str1.charAt(0);
System.out.println(char1);
2. 将字符串转为字符数组
char[] toCharArray()
String str1 = "hello";
//char[] toCharArray()
//将字符串变成字符数组返回
char[] chars1 = str1.toCharArray();
3. 比较大小
a) 比较相等
boolean equals(Object anObject)
String str1 = "hello";
String str2 = "hehe";
System.out.println(str1.equals(str2));
b) 比较两个字符串Unicode码的字典序
int compareTo(String anotherString) 返回 int
字母从小到大的顺序为 A~Z~a~z
System.out.println("a".compareTo("z"));
System.out.println("a".compareTo("Z"));
System.out.println("A".compareTo("Z"));
结果为:
c) 不区分大小写的比较
boolean equalsIgnoreCase(String anotherString) 不分大小写比较相等
System.out.println("hello".equalsIgnoreCase("HelLo"));
4. 查找
a) 查找子串是否存在
boolean contains(String str)
System.out.println("hello".contains("llo"));
System.out.println("hello".contains("las"));
b) 查找子串位置,返回开始位置的索引
int indexOf(String str),没找到返回 -1;如果存在多个子串则返回第一个的索引
System.out.println("hello world".indexOf("world"));
System.out.println("hello world".indexOf("word"));
System.out.println("hello world world".indexOf("world"));
5. 字符串替换
由于字符串是不和变的,所以字符串替换的返回值是一个新串,而不是在原来字符串的基础上改变。
a) 替换所有指定内容
String replaceAll(String regex, String replacement) 这里的参数 regex 是 正则表达式
将 regex 的内容替换成 replacement 的内容,如果原字符串存在多个 regex 子串,将全部替换。
String string = "hello world world";
System.out.println(string.replaceAll("world","word"));
System.out.println(string);
结果为:
6. 字符串切分/拆分
a) 根据分隔符将全部拆分
String[] split(String regex)
string = "192.168.0.1";
String[] res = string.split("\\.");
// "\\." 这里涉及到两次转义,正则表达式的缘故
System.out.println(Arrays.toString(res));
结果为:
b) 根据 regex 将字符串切割成 limit 个
String[] split(String regex,int limit),若 limit 小于可切割数 n ,则切割成 limit 个,若 limit 大于等于可切割数 n ,则切割成 n 个。
string = "a b c d e f";
res = string.split(" ",3);
System.out.println(Arrays.toString(res));
//若 limit 大于等于可切割数 n ,则切割成 n 个
res = string.split(" ",10);
System.out.println(Arrays.toString(res));
结果为:
7. 字符串截取
a) 从指定索引位置截取到结尾
String substring(int beginIndex)
string = "0123456789";
String ret = string.substring(4);
System.out.println(ret);
结果为:
b) 截取部分内容
String substring(int beginIndex, int endIndex),截取区间为 [beginIndex, endIndex)
string = "0123456789";
//b)截取部分内容 String substring(int beginIndex, int endIndex)
//截取范围是[begin,end)的前闭后开区间
ret = string.substring(4,8);
System.out.println(ret);
结果为:
8. 判断字符串是否为空
boolean isEmpty()
不是判断是否为 null,是判断长度是否为 0,当字符串为 null 时会抛出空指针异常
//判断字符串是否为空,但不是null,而是长度为0
//boolean isEmpty()
string = "";
System.out.println(string.isEmpty());
//空指针异常
string = null;
System.out.println(string.isEmpty());
结果为:
9. 其他操作
去掉字符串左右的空白符(回车换行制表等等)
String trim()
string = " hello\nhi\t hui\n";
System.out.println("[" + string + "]");
System.out.println("[" + string.trim() + "]");
结果为:
大小写转化
转大写 String toUpperCase()
转小写 String toLowerCase()
string = "AbCdEfG";
System.out.println(string.toUpperCase());
//转小写 String toLowerCase()
System.out.println(string.toLowerCase());
结果为: