字符串操作
1.获取子字符串
通过String类的substring()方法可对字符串进行截取。有以下两种方法:
1.substring(int beginIndex)
该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串。
语法:
str.substring(int beginIndex)
例
String str = "Hello World"; //定义字符串str
String substr = str.substring(3); //获取字符串,此时substr值为lo World
在字符串中,空格占用一个索引位置
字符串下标是从0开始的
2.substring(int beginIndex,int endIndex)
该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的子串。
语法:
str.substring(int beginIndex,int endIndex)
beginIndex:开始截取子字符串的索引位置。
endIndex:子字符串在整个字符串中的结束位置(截取时不包括它)
例:
public class Subs { // 创建类
public static void main(String args[]) { // 主方法
String str = "hello world"; // 定义的字符串
String substr = str.substring(0, 3); // 对字符串进行截取
System.out.println(substr); // 输出截取后的字符串
}
}
运行结果:
hel
2.字符串替换
replace()方法可实现将指定的字符或字符串替换成新的字符或字符串
语法:
str.replace(char oldChar,char newChar)
oldChar:要替换的字符或字符串
newChar:用于替换原来字符串的内容
replace()方法返回的结果是一个新的字符串。如果字符串oldChar没有出现在该对象表达式中的字符串序列中,则将原字符串返回。
例:
public class NewStr { // 创建类
public static void main(String args[]) { // 主方法
String str = "address"; // 定义字符串str
// 字符串str中的字符"a"替换成"A"后返回的新字符串newstr
String newstr = str.replace("a", "A");
System.out.println(newstr); // 将字符串newstr输出
}
}
运行结果:
Address
如果要替换的字符oldChar在字符串中重复多次出现,replace()方法会将所有oldChar全部替换成newChar。
3.去除空格
trim()方法返回字符串的副本,去除前导空格和尾部空格。
语法:
str.trim()
例:
public class Blak { // 创建类
public static void main(String args[]) { // 主方法
String str = " Java class "; // 定义字符串str
System.out.println("字符串原来的长度:" + str.length()); // 将str原来的长度输出
System.out.println("去掉空格后的长度:" + str.trim().length());
// 将str去掉前导和尾部的空格后的结果输出
}
}
运行结果:
字符串原来的长度:16
去掉空格后的长度:11
另:用replace()也可实现去除空格的操作。
4.判断字符的开始与结尾
startWith()方法与endsWith()方法分别用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都为boolean类型。
1.startWith()方法
该方法用于判断当前字符串对象的前缀是否是参数指定的字符串。
语法:
str.startWith(String prefix)
prefix指作为前缀的字符串
2.endsWith()方法
该方法用于判断当前字符串对象的前缀是否是参数指定的字符串。
语法:
str.endsWith(String suffix)
suffix指作为后缀的字符串
3.实例
public class StartOrEnd { // 创建类
public static void main(String args[]) { // 主方法
String num1 = "22045612"; // 定义字符串num1
String num2 = "21304578"; // 定义字符串num2
boolean b = num1.startsWith("22"); // 判断字符串num1是否以'22'开头
boolean b2 = num1.endsWith("78"); // 判断字符串num1是否以'78'开头
boolean b3 = num2.startsWith("22"); // 判断字符串num2是否以'22'开头
boolean b4 = num2.endsWith("78"); // 判断字符串num2是否以'78'开头
System.out.println("字符串num1是以'22'开始的吗?" + b);
System.out.println("字符串num1是以'78'结束的吗?" + b2); // 输出信息
System.out.println("字符串num2是以'22'开始的吗?" + b3);
System.out.println("字符串num2是以'78'结束的吗?" + b4);
}
}
运行结果:
字符串num1是以'22'开始的吗?true
字符串num1是以'78'结束的吗?false
字符串num2是以'22'开始的吗?false
字符串num2是以'78'结束的吗?true
5.判断字符串是否相等
对字符串对象进行比较不能简单地使用比较运算符“==”,因为比较运算符比较的是两个字符串的地址是否相同。即使两个字符串的内容相同,两个对象的内存地址也是不同的,使用比较运算符任然会返回false。
例:
String tom = new String("I am a student");
String jerry = new String("I am a student");
boolean b = (tom == jerry);
此时,b的值为false,因为字符串是对象,tom、jerry是引用。
因此,要比较两个字符串内容是否相等,应使用equals()方法和equalIgnoreCase()方法。
1.equals()方法
如果两个字符串具有相同的字符和长度,则使用equals()方法进行比较时,返回true。
语法:
str.equals(String otherstr)
其中,str、otherstr是参加比较的两个字符串对象。
2.equalsIgnoreCase()方法
使用equals()方法对字符串进行比较时是区分大小写的,而使用equalsIgnoreCase()方法是在忽略了大小写的情况下比较两个字符串是否相等,返回的结果仍为boolean类型。
语法:
str.equalsIgnoreCase(String otherstr)
其中,str、otherstr是参加比较的两个字符串对象。
3.实例
public class Opinion { // 创建类
public static void main(String args[]) { // 主方法
String s1 = new String("abc"); // 创建字符串对象s1
String s2 = new String("ABC"); // 创建字符串对象s2
String s3 = new String("abc"); // 创建字符串对象s3
boolean b = s1.equals(s2); // 使用equals()方法比较s1与s2
// 使用equalsIgnoreCase()方法比较s1与s2
boolean b2 = s1.equalsIgnoreCase(s2);
System.out.println(s1 + " equals " + s2 + " :" + b); // 输出信息
System.out.println(s1 + " equalsIgnoreCase " + s2 + " :" + b2);
}
}
运行结果:
abc equals ABC :false
abc equalsIgnoreCase ABC :true
6.按字典顺序比较两个字符串
compareTo()方法为按字典顺序比较两个字符串。如果按字典顺序此String对象位于参数字符串之前,则比较结果为一个负整数。如果按字典顺序此String对象位于参数字符串之后,则比较结果为一个正整数。如果这两个字符串相等,则结果为0。
语法:
str.compareTo(String otherstr)
其中,str、otherstr是参加比较的两个字符串对象。
例:
public class Wordbook { // 创建类
public static void main(String args[]) { // 主方法
String str = new String("b");
String str2 = new String("a"); // 用于比较的3个字符串
String str3 = new String("c");
System.out.println(str + " compareTo " + str2 + ":"
+ str.compareTo(str2)); // 将str与str2比较的结果输出
System.out.println(str + " compareTo " + str3 + ":"
+ str.compareTo(str3)); // 将str与str3比较的结果输出
}
}
运行结果:
b compareTo a:1
b compareTo c:-1
7.字母大小写转换
1.toLowerCase()方法
该方法将String转换为小写。如果字符串中没有应该被转换的字符,则将原字符串返回;否则将返回一个新的字符串。
语法:
str.toLowerCase()
其中,str是要进行转换的字符串
2.toUpperCase()方法
该方法将String转换为大写。如果字符串中没有应该被转换的字符,则将原字符串返回;否则将返回一个新的字符串。
语法:
str.toUpperCase()
其中,str是要进行转换的字符串
*使用toLowerCase()方法和toUpperCase()方法进行大小写转换时,数字或非字符不受影响。
3.实例
public class UpAndLower { // 创建类
public static void main(String args[]) { // 主方法
String str = new String("abc DEF"); // 创建的字符串str
String newstr = str.toLowerCase(); //使用toLowerCase()方法实行小写转换
String newstr2 = str.toUpperCase();//使用toUpperCase()方法实行大写转换
System.out.println(newstr);// 将转换后的结果输出
System.out.println(newstr2);
}
}
运行结果:
abc def
ABC DEF
8.字符串分割
使用split()方法可以使字符串按指定的分割字符或字符串对内容进行分割,并将分割后的结果存放在字符串数组中。split()方法有以下两种形式。
1.split(String sign)
该方法根据给定的分割符对字符串进行拆分。
语法:
str.split(String sign)
其中,sign为分割字符串的分割符。
如果想定义多个分割符,可使用符号“|”。例如“,|=”表示分割符分别为“,”和“=”。
2.split(String sign,int limit)
该方法可根据给定的分割符对字符串进行拆分,并限定拆分的次数。
语法:
str.split(String sign,int limit)
sign:分割字符串的分割符
limit:限制的分割字数
3.实例
public class Division { // 创建类
public static void main(String args[]) { // 主方法
String str = new String("abc,def,ghi,gkl"); // 定义的字符串str
// 使用split()方法对字符串进行拆分,返回字符串数组
String[] newstr = str.split(",");
for (int i = 0; i < newstr.length; i++) { // 使用for循环遍历字符数组
System.out.println(newstr[i]); // 输出信息
}
// 对字符串进行拆分,并限定拆分次数,返回字符数组
String[] newstr2 = str.split(",", 2);
for (int j = 0; j < newstr2.length; j++) { // 循环遍历字符数组
System.out.println(newstr2[j]); // 输出信息
}
}
}
运行结果:
abc
def
ghi
gkl
abc
def,ghi,gkl