在上一篇文章中,我们已经介绍了 Java 字符串的基础操作方法。本文将继续深入探讨 Java 字符串的进阶方法,包括比较、格式化、正则表达式应用等,帮助你更全面地掌握字符串处理技巧。
compareTo()
与compareToIgnoreCase()
compareTo()
方法用于按字典序比较两个字符串的大小,返回值为整数:
若当前字符串小于参数字符串,返回负整数
若相等,返回 0
若当前字符串大于参数字符串,返回正整数
compareToIgnoreCase()
则在比较时忽略大小写。
String str1 = "apple";
String str2 = "banana";
String str3 = "Apple";
System.out.println(str1.compareTo(str2)); // 输出负数(-1)
System.out.println(str1.compareToIgnoreCase(str3)); // 输出0(忽略大小写后相等)
regionMatches()
该方法用于比较两个字符串的指定区域是否相等,支持忽略大小写:
String str = "HelloWorld";
String anotherStr = "JavaWorld";
// 比较str从索引5开始的5个字符与anotherStr从索引4开始的5个字符
boolean isMatch = str.regionMatches(5, anotherStr, 4, 5);
System.out.println(isMatch); // 输出true
format()
String.format()
方法用于创建格式化的字符串,支持类似 C 语言的printf
风格格式说明符:
String name = "Alice";
int age = 25;
double score = 95.5;
// 使用%d(整数)、%s(字符串)、%f(浮点数)占位符
String formattedStr = String.format("姓名:%s,年龄:%d,分数:%.1f", name, age, score);
System.out.println(formattedStr); // 输出:姓名:Alice,年龄:25,分数:95.5
Formatter
类对于复杂的格式化需求,可以使用Formatter
类:
import java.util.Formatter;
public class StringFormatExample {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
try (Formatter formatter = new Formatter(sb)) {
formatter.format("时间:%tF %, System.currentTimeMillis());
}
System.out.println(sb.toString()); // 输出当前时间,如:时间:2023-10-15 14:30:45
}
}
matches()
matches()
方法用于判断字符串是否匹配指定的正则表达式:
String email = "[email protected]";
boolean isValidEmail = email.matches("^[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z]{2,}$");
System.out.println(isValidEmail); // 输出true
split()
结合正则split()
方法可以接受正则表达式作为分隔符:
String str = "Java123Python456C++";
String[] parts = str.split("\\d+"); // 按数字分割
for (String part : parts) {
System.out.println(part); // 输出Java、Python、C++
}
replaceFirst()
与replaceAll()
这两个方法支持使用正则表达式进行替换:
String html = "Hello World
";
String plainText = html.replaceAll("<[^>]+>", ""); // 移除所有HTML标签
System.out.println(plainText); // 输出:Hello World
StringBuilder
与StringBuffer
StringBuilder
(非线程安全)和StringBuffer
(线程安全)用于动态构建字符串:
StringBuilder sb = new StringBuilder();
sb.append("Hello")
.append(" ")
.append("World");
String result = sb.toString(); // 输出:Hello World
valueOf()
String.valueOf()
方法可以将各种基本类型转换为字符串:
int num = 123;
String strNum = String.valueOf(num); // 等价于Integer.toString(num)
// 字符数组转字符串
char[] chars = {'H', 'e', 'l', 'l', 'o'};
String str = new String(chars);
// 字符串转字符数组
String s = "World";
char[] charArray = s.toCharArray();
String str = "你好";
try {
// 字符串转字节数组(指定编码)[] bytes
byte = str.getBytes("UTF-8");
// 字节数组转字符串
String newStr = new String(bytes, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
+
拼接// 低效方式
String result = "";
for (int i = 0; i < 1000; i++) {
result += i; // 每次循环都会创建新的String对象
}
// 高效方式
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
sb.append(i); // 只操作一个StringBuilder对象
}
intern()
方法节省内存intern()
方法可以将字符串添加到字符串常量池中:
String s1 = new String("hello").intern();
String s2 = "hello";
System.out.println(s1 == s2); // 输出true
第三方库还提供了更丰富的字符串处理工具:
import org.apache.commons.lang3.StringUtils;
public class StringUtilsExample {
public static void main(String[] args) {
String str = " Hello World ";
// 去除空格(包括中间的空格)
String trimmed = StringUtils.deleteWhitespace(str);
// 判断是否为空
boolean isEmpty = StringUtils.isEmpty(str);
// 反转字符串
String reversed = StringUtils.reverse(str);
}
}
本文深入介绍了 Java 字符串的进阶方法,包括比较、格式化、正则表达式应用等。掌握这些方法可以帮助你更高效地处理复杂的字符串操作。在实际开发中,建议根据具体场景选择合适的方法,并注意性能优化,避免常见的字符串操作陷阱。通过不断实践和积累,你将能够更加熟练地运用 Java 字符串处理技术解决各种实际问题。
感谢观看, 别忘了点赞, 关注, 收藏~
\(●´ϖ`●)/\(●´ϖ`●)/\(●´ϖ`●)/