目录
1 获取String的相关信息功能
2 String的判断功能
3 String字符中转换方法
4 常用方法
5 平时开发中常见问题
1 获取String的相关信息功能
1)length():获取该字符串长度
String str = "group-banner-top-";
int length = str.length();
System.out.println(length);
运行结果:17
2)charAt(int index):获取指定索引处字符
String str = "group-banner-top-";
System.out.println(str.charAt(7));
运行结果:a
3)indexOf(String str):获取指定字符在该字符串第一次出现的位置
String str = "group-banner-top-";
int index = str.indexOf("a");
System.out.println(index);
运行结果:7
4)indexOf(String str, int fromIndex) 获取指定字符从某处开始第一次出现的位置
String str = "graap-banner-top-";
int index = str.indexOf("a",5);
System.out.println(index);
运行结果:7
5)substring(int beginIndex) 从beginIndex开始位置截取字符串
String str = "graap-banner-top-";
String substring = str.substring(1);
System.out.println(substring);
运行结果:raap-banner-top-
6)substring(int beginIndex, int endIndex) 从beginIndex开始,到endIndex结束截取字符串。包括start,不包括end
String str = "graap-banner-top-";
String substring = str.substring(1,3);
System.out.println(substring);
运行结果:ra
2 String的判断功能
1)equals(Object anObject):比较字符串内容是否相同
String str = "fghjkvja女大三你看看电视";
System.out.println("fghjkvja女大三你看看电视".equals(str));
System.out.println("hhhjjj".equals(str));
运行结果:true
false
2)equalsIgnoreCase(String anotherString) :比较字符串内容是否相同,忽略大小写
String str = "ffffff";
System.out.println("FFFFFF".equalsIgnoreCase(str));
运行结果:true
3)startsWith(String prefix):判断字符串是否以指定的字符开头
String str = "fff白居寺fff";
System.out.println(str.startsWith("fff"));
运行结果:true
4)startsWith(String prefix, int toffset):判断字符串是否以指定的字符开头,参数toffest指定从哪个下标开始
String str = "fff白居寺fff";
System.out.println(str.startsWith("白",3));
System.out.println(str.startsWith("白",4));
运行结果:true
false
5)endsWith(String suffix):判断字符串是否以指定的字符结尾
String str = "fff白居寺fff";
System.out.println(str.endsWith("白"));
运行结果:false
6)isEmpty():判断字符串是否为空
String str = "";
System.out.println(str.isEmpty());
运行结果:true
3 String字符中转换方法
1)String toLowerCase():将字符串转为小写
String str = "HDFNNCVNDK";
System.out.println(str.toLowerCase());
运行结果:hdfnncvndk
2)String toUpperCase():将字符串转大写
String str = "kkskksfhdf";
System.out.println(str.toUpperCase());
3)char[ ] toCharArray():将字符串转为字符数组
String str = "HDFNNCV把接口顶你个肺NDK";
char[] chars = str.toCharArray();
System.out.println(chars);
运行结果:HDFNNCV把接口顶你个肺NDK
4 常用方法
1)String trim():去除字符串两端的空格
String str = " kkskksfhdf ";
System.out.println(str);
System.out.println(str.trim());
运行结果: kkskksfhdf
kkskksfhdf
2)CharSequence subSequence(int beginIndex, int endIndex):截取字符串指定位置组成一个新的字符串
String str = " kkskaaaaksfhdf ";
System.out.println(str.subSequence(1,5));
运行结果:kksk
3) String replace(CharSequence target, CharSequence replacement)
String str = "kkskaaaaksfhdf";
System.out.println(str.replace("a","o"));
运行结果:kkskooooksfhdf
4)String replaceAll(String regex, String replacement):用新的内容替换全部就内容
String str = "kkskaaaaksfhdf";
System.out.println(str.replaceAll("a","o"));
运行结果:kkskooooksfhdf
5)String replaceFirst(String regex, String replacement):替换首个满足函数的内容
String str = "kkskaaaaksfhdf";
System.out.println(str.replaceFirst("k","o"));
运行结果:okskaaaaksfhdf
注意:之前用replaceFirst的时候遇到了一些问题:特意写出来分享下:
想把22.22.02.23切割成2222.02.23的形式,就想到了replaceFirst这个方法,但是结果却出乎意料。
String str = "22.22.02.23";
String s = str.replaceFirst(".", "");
System.out.println(s);
运行结果:2.22.02.23
可以发现,它将我的第一个字符给切割了,并没有切割第一个.的字符。因为这个时候"."相当于元字符,匹配除“\n”和"\r"之外的任何单个字符。所以就把第一个字符切割了。
String str = "22.22.02.23";
String s = str.replaceFirst("\\.", "");
System.out.println(s);
运行结果:2222.02.23
6)lastIndexOf(String str):返回指定字符出现最后一次的下标
String str = "kkskaaaaksfhdf";
System.out.println(str.lastIndexOf("k"));
运行结果:8
7)contains(CharSequence s):字符串中是否包含指定字符
String str = "kkskaaaaksfhdf";
System.out.println(str.contains("aa"));
运行结果:true
8)String concat(String str):在原有字符串基础上加上指定字符串
String str = "大";
System.out.println(str.concat("逼兜"));
运行结果:大逼兜
5 平时开发中常见问题
1)获取第一个“-”后面(前面)的所有字符
public static void main(String[] args) {
String str = "group-banner-top-http://pic/test/20220225092606e0dc59c3ef8c915b8fbe9f99153b7ef9";
//获取第一个"-"后面的所有字符串
int index = str.indexOf("-");
System.out.println("第一个字符下标:"+index);
String after = str.substring(index+1);
System.out.println("第一个-后面的字符:"+after);
String before = str.substring(0,index);
System.out.println("第一个-前面的字符:"+before);
}
其实获取第一个标识符的前面和后面的所有内容还是比较容易的。
2)获取第二个“-”后面的所有字符
public static void main(String[] args) {
String str = "group-banner-top-http://pic/test/20220225092606e0dc59c3ef8c915b8fbe9f99153b7ef9";
//获取第一个"-"后面的所有字符串
int index = str.indexOf("-");
System.out.println("第一个字符下标:"+index);
String after = str.substring(str.indexOf("-",str.indexOf("-")+1)+1);
System.out.println("第二个-后面的字符:"+after);
String before = str.substring(0,str.indexOf("-",str.indexOf("-")+1));
System.out.println("第三个-前面的字符:"+before);
}
获取第二个标识符后面的内容,只需要拿到第一个标识符的初始位置并且加1,它就会从后开始切割
2)获取第三个“-”后面的所有字符
public static void main(String[] args) {
String str = "group-banner-top-http://pic/test/20220225092606e0dc59c3ef8c915b8fbe9f99153b7ef9";
//获取第一个"-"后面的所有字符串
int index = str.indexOf("-");
System.out.println("第一个字符下标:"+index);
String str1 = str.substring(index+1); //先切割一遍,使得字符串前面变的只有两个两个“-”,然后就可以用上一种获取第二个字符的方法了
System.out.println("切割掉第一个‘-’和前面的字符串剩下的字符串为:"+str1);
String after = str1.substring(str1.indexOf("-",str1.indexOf("-")+1)+1);
System.out.println("第三个‘-’后面的字符:"+after);
int length = (str.length() - after.length()) - 1;
String before1 = str.substring(0,length);
System.out.println("第三个‘-’前面的字符:"+before1);
}
获取第三个标识符的时候,因为我们不清楚前面字符串的长度,所以只需要先切割一遍,再按照获取第二个标识符那样就好了