String类提供了许多有关字符串操作的方法,可以使用这些方法对字符串对象进行求长度、查找、比较、取子串等各种操作。
String方法的使用格式:
例如:
String字符串常用的方法如下。
1.求字符串长度
length()
参数:无。
返回值类型:int。
功能:length()方法可以获取一个字符串的长度,也就是字符串的字符个数。如:
这时i的值为6。
字符串的长度,是指引号""之间的字符个数,不包括两个引号。如果字符串中包含转义符,转义符“\”和它后面的一个字符只能算是一个字符,如“\"”、“\n”、“\\”都只能计为一个字符。字符串中每个字符位置的编号从0开始,最末一个字符的位置是s.length()-1。
2.判定两个字符串是否相同
equals(String s)
equalsIgnoreCase(String s)
参数:String s表示指定的字符串。
返回值类型:boolean。
功能:equals方法用于比较当前字符串是否与参数所指定的字符串s相同。如果相同,方法返回逻辑值true;否则返回false。两个字符串相等的条件是长度相等并且各个对应位置上的字符都相同。
equalsIgnoreCase()方法也可以用于字符串比较,与equals()方法不同的是,equalsIgno-reCase()方法忽略字母的大小写,也就是大小写不同的相同字母比较的结果为true。
注意,判断两个字符串是否相等,不能使用关系运算符“==”,因为关系运算符“==”只能用于判断两个基本类型变量或数值是否相等,而引用变量是不能使用“==”运算符来判断是否相等的。
例如:
这时,表达式tom.equals(boy)的值是false,tom.equals(jerry)的值是true。
而表达式tom.equalsIgnoreCase(boy)的值是true,因为equalsIgnoreCase()方法不考虑字母的大小写。
但表达式tom==jerry;是两个字符串地址的比较,结果值应该是false。因为字符串变量tom和jerry虽然内容相同,却是两个不同的两个字符串,它们的地址是不同的。
3.取出字符串某个位置上的字符
charAt(int n)
参数:int n其中,n表示字符串的位置。
返回值类型:char。
功能:charAt()方法将当前字符串中指定位置的字符出取出。其返回值为一个字符。
字符串中字符的位置从0开始,当字符串长度为n时,最末一个字符的位置是n-1。
【例7-1】将字符串的内容反转输出显示。
程序思路:从字符串最后一个字符位置开始,使用一个减计数循环和charAt()方法,将每一个字符逐一提取显示。
程序运行结果:
对于String字符串s,使用循环命令for(int i=0;i<s.length();i++)和charAt(i)方法,可以顺序读取字符串的每一个字符。
4.按字典顺序比较两个字符串
compareTo(String s)
参数:String s表示指定的字符串。
返回值类型:int。
功能:compareTo(String s)方法,用于按字典顺序比较当前字符串与参数s指定的字符串的大小。如果当前字符串与s相同,该方法返回值0;如果当前字符串对象大于s,该方法返回正值;如果小于s,该方法返回负值。
字符大小顺序是指按照Unicode码值进行比较的。如字符′a′的Unicode码值为97,字符′A′的Unicode码值为65,因此,我们可以说字符"a"比字符′A′大。
【例7-2】字符串大小比较。
程序运行结果:
程序中字符串s2前几个字符和字符串s0相同,都是"abc",比较时应该是相等。但由于s2后面还有字符,因此字符串s2比s0大。
与方法equals()一样,比较两个字符串的大小不能使用关系运算符>、<、==等。
5.判断字符串前缀和后缀
startsWith(String s)
endsWith(String s)
参数:String s表示指定的字符串。
返回值类型:boolean。
功能:startsWith(String s)方法,判断当前字符串开头部分是否是参数指定的字符串s;endsWith(String s)方法,判断当前字符串结束部分是否是参数指定的字符串s。
假设一个字符串的内容是姓名,就可以使用startsWith()方法来判断姓氏。如判断是否姓“张”:
这时“studentA.startsWith("张");”的结果为true。“studentB.startsWith("张");”的结果为false。
6.判定指定子字符串在字符串中的位置
indexOf(String s)
参数:String s表示指定的字符串。
返回值类型:int。
功能:indexOf(String s)从当前字符串的最前位置开始检索子字符串s,并返回首次出现s的位置。如果没有检索到字符串s,该方法返回的值是-1。
indexOf(String s,int startpoint)
参数:String s表示指定的字符串;int startpoint表示起始位置。
返回值类型:int。(www.daowen.com)
功能:indexOf(String s,int startpoint)方法从当前字符串的startpoint位置处开始检索子字符串s,并返回首次出现s的位置。如果没有检索到字符串s,该方法返回的值是-1。
lastIndexOf(String s)
参数:String s表示指定的字符串。
返回值类型:int。
功能:lastIndexOf(String s)方法从当前字符串的最后面开始检索字符串s,并返回出现s的位置。如果没有检索到字符串s,该方法返回的值是-1。
【例7-3】字符串中子串位置判定。
程序运行结果:
【例7-4】判断E-mail地址是否正确。
程序思路:E-mail地址包含有“@”和“.”字符,并且“@”字符之前要有用户名。
程序运行结果:
结果分析:email.indexOf("@")>0,条件表示字符串E-mail中存在"@"这个字符,并且"@"符号前至少有一个字符。email.indexOf(".")!=-1,条件表示字符串E-mail中包含有"."这个字符。
7.返回字符串中的一个子字符串
substring(int start)
substring(int start,int end)
参数:int start指定开始位置,int end指定结束位置。
返回值类型:String。
功能:substring(int start)获得当前字符串的一个子串,该子串是从当前字符串的start处开始直到字符串的末尾;substring(int start,int end)获得一个当前字符串的子串,该子串是从当前字符串的start处截取到end处所得到的字符串(不包括end处所对应的字符)。取出的子字符串的长度为end-start。
例如:
执行上面语句后,变量fname的内容为"孙",lname的内容为"悟空"。
8.用给定的字符串(字符)替换字符串中匹配的子字符串(字符)
replaceAll(String oldStr,String newStr)
参数:String oldStr指定被替换的子串;String newStr指定替换的子串。
返回值类型:String。
功能:将当前字符串中所有和oldStr相同的子字符串替换为newStr指定的字符串。
replace(char oldChar,char newChar)
参数:char oldChar指定被替换的字符;char newChar指定替换的字符。
返回值类型:String。
功能:将当前字符串中所有和oldChar相同的字符替换为newChar指定的字符。
注意区别:replaceAll()方法替换的是子字符串;replace()方法替换的是字符。
【例7-5】字符串字符和子串的替换。
程序运行结果:
猪悟能
String类没有插入和删除子串的功能,可以利用repaceAll()方法来实现插入和删除:
被替换后的字符串name的内容为:"孙大圣名叫悟空"。
9.清除字符串的前后空格
trim()
参数:无。
返回值类型:String。
功能:将字符串前后的空格删除。只能删除与定界符直引号“"”相邻的空格,出现在字符串中间的空格不会被删除。
例如:
如果字符串存在空格,在进行字符串比较等操作时,可能会出现意外的结果。
例如:
这时表达式name.equals("孙悟空")的值为false。
10.字符串的大小写转换
toUpperCase()
参数:无。
功能:返回一个该字符串大写形式的字符串。例如:
这时,s.toUpperCase()的值为"STUDENT"。
toLowerCase()
参数:无。
功能:返回一个该字符串小写形式的字符串。例如:
这时s.toLowerCase()的值为"student"。
【例7-6】判断字符串是否为回文。
程序思路:所谓回文,就是将字符串前一半和后一半呈对称关系,当字符串长度为n时,第0个字符和第n-1个字符相同,第1个字符和第n-2个字符相同,……第i个字符与第n-i-1个字符相同,直到i==n/2个字符为止。
程序运行结果:
【例7-7】在屏幕上水平滚动显示一行字符串。
程序思路:字符串水平滚动,就是将第一个字符移到最后一个,反复在同一行位置上显示,每次显示时,稍作暂停。
程序运行结果:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。