String类
1. 创建字符串、获取长度
String类是不可改变的,只能赋值。
如果想对字符串做修改,需要用StringBuffer&StringBuilder类。
String str1 = "abc";
//直接创建方式
char[] strarray = {'a','b','c'};
String str2 = new String(strarray);
//提供一个字符数组 参数来初始化字符串
int len = str1.length();
//获取长度
2.查找字符在字符串中的索引
int idx = str.indexOf("a");
//字符a在str中首次出现的位置
int idx = str.lastIndexOf("a");
//字符串s在str中中最后一次出现的位置,如果没有检索到字符串s,该方法返回-1;
如果s是空字符串,则返回整个字符串的长度。
3. 查找指定索引处的字符
char content = str.charAt(3);
//返回索引为3的字符
4. 连接字符串
str3 = str1.concat(str2);
//使用concat方法
String hello = "Hello";
String world = "World";
String result = hello + ", " + world;
//直接使用加号
5. 获取子字符串
String substr1 = str.substring(1);
//截取从指定索引位置1开始到字符串结尾的子串
String substr2 = str.substring(1,4);
//从beginIndex开始,到endIndex结束(不包括endIndex),从1-4,但不包括4
6. 去除字符串首尾的空格去除字符串首尾的空格
String str1 = str.trim();
7. 去除字符串首尾的空格去除字符串首尾的空格
replace()方法
String str = "abcde";
String newStr = str.replace("abc", "fgh");
//把abc替换成fgh
replaceALL()方法:可以使用正则表达式来匹配需要替换的字符串,并将其替换为指定的字符串
String str = "abc123def";
String newStr = str.replaceAll("[0-9]+", ",");
//移除所有数字,输出abc,def
8. 判断字符串的开始与结尾
- str.startsWith(String prefix) :判断字符串是否以指定的后缀prefix开始
- str.startsWith(String prefix, int beginidx):判断字符串中从beginidx开始的子串是否以指定的后缀prefix开始
- str.endsWith(String suffix):判断此字符串是否以指定的后缀suffix结束
String str = "abcdef";
boolean res = str.startsWith("abc");//返回true
boolean res = str.StartsWith("def",3);//返回true
boolean res = str.endsWith("def");//返回true
9. 判断字符串是否相等
- str1.equals(str2) 区分大小写
- str1.equlasIgnoreCase(str2) 不区分大小写
String str1 = "abcdef";
String str2 = "abcdef";
String str3 = "ABCDEF";
boolean isEqualed = str1.equals(str2);//返回true
boolean isEqualed = str1.equals(str3);//返回false
boolean isEqualed = str1.equlasIgnoreCase(str3);//返回true
10. 判断字符串是否相等
compareTo():比较对应字符的大小(ASCII码),如果参数字符串等于此字符串,则返回值 0;如果此字符串小于字符串参数,则返回一个小于 0 的值;如果此字符串大于字符串参数,则返回一个大于 0 的值。
String str1 = "abc";
String str2 = "abcdef";
int res = str1.compareTo(str2);
11. 字符串大小写转换
- toLowerCase():大写字母改写为小写字母
- toUpperCase():小写字母改写为大写字母
String str1 = str1.toUpperCase();
12. 字符串分割
split()方法用于根据给定的正则表达式拆分字符串。
- 使用.、$、|和*等特殊字符作为分隔符时,需要加上转义字符\
- 如果要使用多个字符作为分隔符,可以使用|作为连接符
- split()方法允许传递一个额外的参数来限制拆分的子字符串数量
String str = "abc def A.B.C"
String[] res = str.split(" ");//res = {"abc","def","A.B.C"}
String[] res = str.split(" ",2);//res = {"abc","def A.B.C"}
String[] res = str.split("\\.");//res = {"abc def A","B","C"}
String str = "abc and def or fgh"
String[] res = str.split("and|or");//res = {"abc "," def "," fgh"}
13. 字符串转换成字符数组
toCharArray()方法
String str = "abcdef";
char charArray[] = str.toCharArray();
StringBuffer&StringBuilder类
- StringBuffer&StringBuilder类可以对字符串进行修改
- StringBuilder相比StringBuffer速度较快,多数情况下使用StringBuilder
- StringBuilder不能同步访问,不是线性安全的,若应用程序要求线程安全,必须使用StringBuffer
1. 创建字符串并添加字符
使用append()添加字符
StringBuffer str = new StringBuffer("");
str.append("abc");
2. 字符串长度
setLength(int newLength):设置字符序列的长度为newLength
str.length();
str.setLength(5);
3. 删除字符
delete(int start,int end):移除start-end子字符串的内容,包括end
deleteCharAt(int i):删除指定位置i的字符
str.delete(0,2);
str.deleteCharAt(str.length()-1);//删除最后一个字符
4. 插入字符
insert(int offset, int i):将 int 参数的字符串表示形式插入此序列中。
StringBuffer str = new StringBuffer("abcdef");
str1 = str.insert(3, 123); //str1: abc123def
5. 替换指定位置内容
- replace(int start,int end,String
str):用String类型的字符串str替换此字符串的子字符串start-end中的内容 - setCharAt(int index,char ch):将给定索引处的字符设置为ch
StringBuffer str = new StringBuffer("abcdef");
String s = "123";
str.replace(1,1,s); //str: a123cdef
str.setCharAt(1, b) //str: ab23def
6. 翻转字符串
str.reverse();
7. 当前容量
str.capacity(); //获取当前容量值
str.ensureCapacity(int minimumCapacity)//确保容量小于指定的最小值
8. 转换成String类
str.toString();