Java提供了丰富的API给使用者方便其快捷高效的进行开发工作,本篇博客接上篇↷Java高级编程–常用类之字符串相关类String、StringBuffer、StringBuilder详细介绍String类中常用的方法。
☍ String类的常用方法
✑ int length():
返回字符串的长度:return value.length
✑ char charAt(int index):
返回某索引处的字符return value[index]
✑ boolean isEmpty():
判断是否是空字符串:return value.length == 0
✑ String toLowerCase():
使用默认语言环境,将String中的所有字符转换为小写
✑ String toUpperCase():
使用默认语言环境,将String中的所有字符转换为大写
✑ String trim():
返回字符串的副本,忽略前导空白和尾部空白
✑ boolean equals(Object obj):
比较字符串的内容是否相同
✑ boolean equalsIgnoreCase(String anotherString) :
与equals方法类似,忽略大小写
✑ String concat(String str) :
将指定字符串连接到此字符串的结尾。等价于用“+”
✑ int compareTo(String anotherString):
比较两个字符串的大小
✑ String substring(int beginIndex):
返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。
✑ String substring(int beginIndex, int endIndex) :
返回一个新字符串,它是此字符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。
✑ boolean endsWith(String suffix):
测试此字符串是否以指定的后缀结束
✑ boolean startsWith(String prefix):
测试此字符串是否以指定的前缀开始
✑ boolean startsWith(String prefix, int toffset):
测试此字符串从指定索引开始的子字符串是否以指定前缀开始
✑ boolean contains(CharSequence s):
当且仅当此字符串包含指定的char值序列时,返回true
✑ int indexOf(String str):
返回指定子字符串在此字符串中第一次出现处的索引
✑ int indexOf(String str, int fromIndex):
返回指定子字符串在此字符串中第一次出
现处的索引,从指定的索引开始
✑ int lastIndexOf(String str):
返回指定子字符串在此字符串中最右边出现处的索引
✑ int lastIndexOf(String str, int fromIndex):
返回指定子字符串在此字符串中最后
一次出现处的索引,从指定的索引开始反向搜索
✑ String replace(char oldChar, char newChar):
返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar 得到的。
✑ String replace(CharSequence target, CharSequence replacement):
使
用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。
✑ String replaceAll(String regex, String replacement) :
使 用 给 定 的
replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
✑ String replaceFirst(String regex, String replacement) :
使用给定的replacement替换此字符串匹配给定的正则表达式的第一个子字符串。
✑ boolean matches(String regex):
告知此字符串是否匹配给定的正则表达式。
✑ String[] split(String regex):
根据给定正则表达式的匹配拆分此字符串。
✑ String[] split(String regex, int limit):
根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中。
说明:
✦ indexOf和lastIndexOf方法如果未找到都是返回-1
✦ 大多数涉及到start和end参数的都是前包后不包[start,end)
代码示例:
public class StringMethod {
/**
* @Description:
* int length() :返回字符串的长度: return value.length
* char charAt(int index): : 返回某索引处的字符return value[index] 下标从0开始,范围为0~length-1
* boolean isEmpty() :判断是否是空字符串:return value.length == 0
* String toLowerCase() :使用默认语言环境,将 String 中的所有英文字符转换为小写
* String toUpperCase() :使用默认语言环境,将 String 中的所有英文字符转换为大写
* String trim(): :返回字符串的副本,忽略前导空白和尾部空白
* boolean equals(Object obj): :比较字符串的内容是否相同
* boolean equalsIgnoreCase(String anotherString) :与equals方法类似,忽略大小写
* String concat(String str) :将指定字符串连接到此字符串的结尾。 等价于用“+”
* int compareTo(String anotherString): :比较两个字符串的大小
* String substring(int beginIndex): :返回一个新的字符串,它是此字符串的从
* beginIndex开始截取到最后的一个子字符串。
* String substring(int beginIndex, int endIndex) : :返回一个新字符串,它是此字
* 符串从beginIndex开始截取到endIndex(不包含)的一个子字符串。
* boolean endsWith(String suffix): :测试此字符串是否以指定的后缀结束
* boolean startsWith(String prefix): :测试此字符串是否以指定的前缀开始
* boolean startsWith(String prefix, int toffset): :测试此字符串从指定索引开始的子字符串是否以指定前缀开始
* boolean contains(CharSequence s) :当且仅当此字符串包含指定的 char 值序列时,返回 true
* int indexOf(String str): :返回指定子字符串在此字符串中第一次出现处的索引
* int indexOf(String str, int fromIndex): :返回指定子字符串在此字符串中第一次出
* 现处的索引,从指定的索引开始找
* int lastIndexOf(String str): :返回指定子字符串在此字符串中最右边出现处的索引
* int lastIndexOf(String str, int fromIndex): :返回指定子字符串在此字符串中最后
* 一次出现处的索引,从指定的索引开始反向搜索
*
* 注:indexOf和lastIndexOf方法如果未找到都是返回-1
*
*
* String replace(char oldChar, char newChar): :返回一个新的字符串,它是
* 通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
* String replace(CharSequence target, CharSequence replacement): :使
* 用指定的字面值序列替换此字符串所有匹配字面值目标序列的子字符串。
* String replaceAll(String regex, String replacement) :使用给定的
* replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
* String replaceFirst(String regex, String replacement) :使用给定的
* replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。
* boolean matches(String regex) :告知此字符串是否匹配给定的正则表达式。
* String[] split(String regex) :根据给定正则表达式的匹配拆分此字符串。
* String[] split(String regex, int limit) :根据匹配给定的正则表达式来拆分此
* 字符串,最多不超过limit个,如果超过了,剩下的全部都放到最后一个元素中。
*/
@Test
public void testMethod1(){
String str1 = "Java Web ";
String str2 = "中国加油";
//1、字符串长度:string.length() 空格也算一个字符
System.out.println("java web's length:" + str1.length());
System.out.println("中国加油的长度:" + str2.length());
//2、返回string中指定下标的字符,下标从0开始,范围为0~length-1:string.charAt(int index);
System.out.println("java web的第一个字符:" + str1.charAt(0));
// System.out.println(str1.charAt(9)); StringIndexOutOfBoundsException
//3、判断string是否为空,空格不算为空:string.isEmpty()
String str3 = "";
String str4 = " ";
System.out.println("java web是否为空:" + str1.isEmpty()); //false
System.out.println("''是否为空:" + str3.isEmpty()); //true
System.out.println("' '是否为空:" + str4.isEmpty()); //false
//4、string字符串中英文字母大写转换:string.toUpperCase() 转换后为新的字符串,不影响原字符串
String str5 = "Love World!爱上2020";
System.out.println(str5 +"大写转换:" + str5.toUpperCase());
//5、string字符串中英文字母小写转换:string.toLowerCase()
System.out.println(str5 + "小写转换:" + str5.toLowerCase());
//6、去除字符串前面和尾部的空白,产生新字符串,不影响原字符串:string.trim()
String str6 = " ---你 好 hello--- ";
System.out.println(str6 + "去除前后空白:" + str6.trim());
//7、比较字符串的内容是否相同:string.equals(Object obj)
String str7 = new String("hello");
String str8 = new String("hello");
String str9 = "hello";
String str10 = "Hello";
System.out.println(str7.equals(str8)); //true
System.out.println(str7.equals(str9)); //true
System.out.println(str9.equals(str10)); //false
//7、忽略大小写比较字符串的内容是否相同:string.equalsIgnoreCase(Object obj)
System.out.println(str9.equalsIgnoreCase(str10)); //true
//8、将s2字符串连接到s1字符串结尾,相当于+: str1.concat(str2)
System.out.println(str1.concat(str9));
//9、比较两个字符串大小:string1.compareTo(String string2) string1.compareToIgnoreCase(String string2)
//返回结果为int,string1>string2返回正数,string1=string2返回0,string1<string2返回负数
System.out.println(str9.compareTo(str10));
System.out.println(str9.compareToIgnoreCase(str10));
//10、截取字符串:string.substring(int index);截取从第几个字符串往后
//string.substring(int beginIndex,int endIndex) 截取从第begin到第end之间的字符串
//前闭后开 [beginIndex,endIndex)下标从0开始
String str11 = "南阳理工学院";
System.out.println(str11.substring(2)); //理工学院
System.out.println(str11); //字符串的不变性
System.out.println(str11.substring(2,4)); //[2,4)--array[2],array[3] 理工
}
@Test
public void testMethod2(){
//1、判断string字符串是否以另一个字符串结尾:string1.endWith(String string2) 返回值为boolean
// 判断string字符串从toffset开始是否以另一个字符串结尾:string1.endWith(String string2,int toffset)
String s1 = "helloWorld";
System.out.println("helloWord是否以World结尾:" + s1.endsWith("World")); //true
System.out.println("helloWord是否以world结尾:" + s1.endsWith("world")); //false:区分大小写
//2、判断string字符串是否以另一个字符串开始:string1.startsWith(string2) 返回值为boolean
System.out.println("helloWord是否以he开头:" + s1.startsWith("he")); //true
System.out.println("helloWord是否以h1开头:" + s1.startsWith("h1")); //false
//3、判断string字符串从指定toffset索引(下标从0开始)开始是否以另一个字符串为开头:string1.endWith(String string2,int toffset)
System.out.println("helloWord从索引2开始是否以ll开头:" + s1.startsWith("ll",2));
//4、判断字符串string是否包含指定字符串
System.out.println("helloWord是否包含字符串or :" + s1.contains("or"));//true
//5、输出指定字符串首次出现在原字符串中相对应首字母的下标(下标从0开始):string.indexOf(String string);
System.out.println("or在helloWorld中首次出现的索引:" + s1.indexOf("or")); //6
System.out.println(s1.indexOf("ors")); //未发现:-1
//6、从原字符串中指定索引位置开始寻找指定字符串在原字符串中首次出现的位置(下标从0开始):string.indexOf(String string,int fromIndex)
String s2 = "sleep while tried";
System.out.println("lee在sleep while tried首次出现的位置:"+s2.indexOf("lee")); //1
System.out.println("lee在sleep while tried中p之后出现的位置:"+ s2.indexOf("lee",4)); //-1
//7、指定字符串在原字符串中最后出现的位置对应的下标:string.lastIndexOf(String string)
System.out.println("e在sleep while tried中从后往前找,下标为:" + s2.lastIndexOf("e")); //15
//8、指定字符串在原字符串指定索引之前最后出现的位置:string.lastIndexOf(String string,int fromIndex)
System.out.println("e在sleep while tried中l之前最后出现的位置:"+ s2.lastIndexOf("e",9)); //3
/*indexOf(str)和lastIndexOf(str)返回值相同的情况
1、存在唯一的字符串string,返回str在string中的索引
2、不存在字符串string,返回-1
*/
}
@Test
public void testMethod3(){
//1、替换字符串中匹配到的所有指定字符:string replace(char oldChar, char newChar) 返回一个新的字符串
String s1= "北京南京西京都是中国的";
String s2 = s1.replace('京','海');
System.out.println(s1); //不可变性
System.out.println(s2);
//2、替换字符串中匹配到的所有指定字符串:string replace(String target, String replacement) 返回一个新的字符串
System.out.println(s1.replace("西京","东京"));
//3、替换字符串中匹配到的所有符合指定正则表达式的字符串:string replace(String regex, String replacement) 返回一个新的字符串
String s3 = "12hello34world5java7891mysql456";
//把字符串中的数字替换成,,如果结果中开头和结尾有,的话去掉
String s4 = s3.replaceAll("\\d+", ",").replaceAll("^,|,$", "");
System.out.println(s4);
//4、替换字符串中正则表达式匹配到的第一个字符串string.replaceFirst(String regex, String replacement)
System.out.println(s3.replaceFirst("\\d", ","));
//5、判断此字符串是否匹配到给定的正则表达式 string.matches(String regex) 返回boolean
//判断这是否是一个杭州的固定电话
String tel = "0571-4534289";
boolean result = tel.matches("0571-\\d{7,8}");
System.out.println(result); //true
//6、根据给定正则表达式的匹配拆分此字符串:string.split(String regex) 返回字符串数组String[] 原数组不变
/*7、根据匹配给定的正则表达式来拆分此字符串,最多不超过limit个,如果超过了,
剩下的全部都放到最后一个元素中:string.split(String regex, int limit) 返回新的字符串数组String[] 原数组不变*/
String str = "hello|world|java!|Study|MySql|Spring";
String[] strs = str.split("\\|");
for (int i = 0; i < strs.length; i++) {
System.out.print(i + ":"+strs[i] + " ");
}
System.out.println();
String[] strs2 = str.split("\\|",3);
for (int i = 0; i < strs2.length; i++) {
System.out.print(i + ":"+strs2[i] + " ");
}
System.out.println();
}
}
String类的练习题↷传送门
本博客与CSDN博客༺ཌ༈君☠纤༈ད༻同步发布
梦想是一场华美的旅途,每个人在找到它之前,都只是孤独的少年。