获取子字符串
通过 String 类的 substring() 方法可对字符串进行截取。这些方法的共同点就是都利用字符串的下标进行截取,且应明确字符串的下标是从0开始的。substring() 方法被两种不同的方法重载,来满足不同程序的需要。
(1)substring(int beginIndex)
该方法返回的是从指定的索引位置开始截取直到该字符串结尾的子串。语法为:
str.substring(int beginIndex);
其中,beginIndex() 指定从某一索引处开始截取字符串。
public class test {
public static void main(String[] args) {
String str = "Hello World !";
String substr = str.substring(6);
System.out.println("字符串str:" + str);
System.out.println("子字符串substr:" + substr);
}
}
(2)substring(int beginIndex, int endIndex)
该方法返回的是从字符串某一索引位置开始截取至某一索引位置结束的字串。语法为:
substring(int beginIndex, int endIndex);
- beginIndex:开始截取子字符串的索引位置
- endIndex:子字符串在整个字符串中的结束位置
public class test {
public static void main(String[] args) {
String str = "Hello World !";
String substr = str.substring(0, 3);
System.out.println("字符串str:" + str);
System.out.println("子字符串substr:" + substr);
}
}
去除空格
trim() 方法返回字符串的副本,忽略前导空格和尾部空格。语法为:
str.trim();
其中,str 为任意字符串对象。
public class test {
public static void main(String[] args) {
String str = " Java String ";
System.out.println("字符串str:" + str);
System.out.println("字符串str长度为:" + str.length());
System.out.println("去除空格后的字符串str为:" + str.trim());
System.out.println("去除空格后的字符串str长度为:" + str.trim().length());
}
}
字符串替换
replace() 方法可实现将指定的字符串或字符替换成显得字符串或字符。语法为:
str.replace(char oldChar, char newChar);
- oldChar:要替换的原来的字符串
- newChar:用于替换的字符串
replace() 方法返回的结果是一个新的字符串。如果字符串 oldChar 没有出现在该对象表达式中的字符串序列中,则将原字符串返回。
public class test {
public static void main(String[] args) {
String str = "address";
System.out.println("字符串str:" + str);
//将字符串中的 s 全部替换成 S
String newStr = str.replace("s", "S");
System.out.println("字符串newStr为:" + newStr);
}
}
如果要替换的字符 oldChar 在字符串中重复出现多次,那么 replace() 方法会将所有 oldChar 全部替换为 newChar。需要注意的是,要替换的字符 oldChar 的大小写要与原字符串中字符的大小写保持一致,否则不能成功替换。
判断字符串的开始与结尾
startsWith() 方法与 endsWith() 方法用于判断字符串是否以指定的内容开始或结束。这两个方法的返回值都为 boolean 类型。
(1)startsWith() 方法
该方法用于判断当前字符串对象的前缀是否为参数指定的字符串。语法为:
str.startsWith(String prefix);
其中,prefix 是指作为前缀的字符。
(2)endsWith() 方法
该方法用于判断当前字符串是否以给定的子字符串结束。语法为:
str.endsWith(String suffix);
其中,suffix 是指作为后缀的字符串。
public class test {
public static void main(String[] args) {
String str = "Hello World";
System.out.println("字符串str:" + str);
System.out.println("字符串" + str + "是否以'H'开头?" + str.startsWith("H"));
System.out.println("字符串" + str + "是否以'He'开头?" + str.startsWith("He"));
System.out.println("字符串" + str + "是否以'd'结尾?" + str.endsWith("d"));
System.out.println("字符串" + str + "是否以'ld'结尾?" + str.endsWith("ld"));
}
}
判断字符串是否相等
对字符串对象进行比较不能简单地使用比较运算符“==”,因为比较运算符比较的是两个字符串的地址是否相同。即使两个字符串的内容相同,两个对象的内存地址也是不同的,使用比较运算符仍然会返回 false。通常比较两个字符串内容是否相等时,使用 equals() 方法和 equalsIsIgnoreCase() 方法。
(1)equals() 方法
如果两个字符串具有相同的字符和长度,则使用 equals() 方法进行比较时,返回 true。语法为:
str.equals(String otherstr);
其中,str、otherstr 是要比较的两个字符串对象。
(2)equalsIsIgnoreCase() 方法
使用equals() 方法对字符串进行比较时是区分大小写的,而使用 equalsIsIgnoreCase() 方法是在忽略了大小写的情况下比较两个字符串是否相等,返回结果仍然为 boolean 类型。语法为:
str.equalsIsIgnoreCase(String otherstr);
其中,str、otherstr 是要比较的两个字符串对象。
public class test {
public static void main(String[] args) {
String str1 = new String("abc");
String str2 = new String("ABC");
String str3 = new String("abc");
System.out.println("字符串str1:" + str1);
System.out.println("字符串str2:" + str2);
System.out.println("字符串str3:" + str3);
System.out.println(str1 + " equals " + str2 + " : " + str1.equals(str2));
System.out.println(str1 + " equalsIsIgnoreCase " + str2 + " : " + str1.equalsIgnoreCase(str2));
System.out.println(str1 + " equals " + str3 + " : " + str1.equals(str3));
}
}
按字典顺序比较两个字符串
compareTo() 方法为按字典顺序比较两个字符串,该比较基于字符串中的各个字符的 Unicode 值,按字典顺序将此 String 对象表示的字符序列与参数字符表示的字符序列进行比较。如果按字典顺序,此 String 类型的对象位于参数字符串之前,则比较结果为一个负整数;如果按字典顺序,此 String 类型的对象位于参数字符串之后,则比较结果为一个正整数;如果这两个字符串相等,则结果为0。该方法的语法为:
str.compareTo(String otherstr);
其中,str、otherstr 是要比较的两个字符串对象。compareTo() 方法只有在 equals(Object) 方法返回 true 时才返回0。
public class test {
public static void main(String[] args) {
String str1 = new String("abc");
String str2 = new String("ABC");
String str3 = new String("abc");
System.out.println("字符串str1:" + str1);
System.out.println("字符串str2:" + str2);
System.out.println("字符串str3:" + str3);
System.out.println(str1 + " compareTo " + str2 + " : " + str1.compareTo(str2));
System.out.println(str1 + " compareTo " + str3 + " : " + str1.compareTo(str3));
}
}
字母大小写转换
字符串的 toLowerCase() 方法可将字符串中所有字符从大写字母转换成小写字母,而 toUpperCase() 方法可将字符串中的小写字母转换成大写字母。
(1)toLowerCase() 方法
该方法将 String 转换为小写。如果字符串中没有应该被转换的字符,则将原字符串返回;否则将返回一个新的字符串,将原字符串中每个该进行小写转换的字符都转换成等价的小写字符。字符长度与原字符长度相同。语法为:
str.toLowerCase();
其中,str 是要进行转换的字符串。
(2)toUpperCase() 方法
该方法将 String 转换为大写。如果字符串中没有应该被转换的字符,则将原字符串返回;否则将返回一个新的字符串,将原字符串中每个该进行大写转换的字符都转换成等价的大写字符。字符长度与原字符长度相同。语法为:
str.UpperCase();
其中,str 是要进行转换的字符串。
public class test {
public static void main(String[] args) {
String str = new String("abc ABC");
System.out.println("字符串str:" + str);
String lowerStr = str.toLowerCase();
System.out.println("字符串lowerStr:" + lowerStr);
String upperStr = str.toUpperCase();
System.out.println("字符串upperStr:" + upperStr);
}
}
使用 toLowerCase() 方法和 toUpperCase() 方法进行大小写转换时,数字或非字符不受影响。
字符串分割
使用 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:模式匹配次数,如果值设置为 n,那么将根据正则表达式匹配 n - 1次,得到的结果数组的长度不会大于 n,数组的最后一项是最后匹配的分割符以后的全部内容
public class test {
public static void main(String[] args) {
String str = "255.255.255.0";
System.out.println("原始字符串:" + str);
String[] firstArray = str.split("\\."); //按照“.”分割,使用转义字符“\\.”
System.out.println("以‘.’分割结果为:");
for (String a : firstArray) {
System.out.print("[" + a + "]");
}
System.out.println();
String[] secondArray = str.split("\\.",2);
System.out.println("以‘.’分割2次的结果为:");
for (String a : secondArray) {
System.out.print("[" + a + "]");
}
System.out.println();
}
}