在 Java 中,截取字符串中指定字符之前或之后的内容可以通过多种方法实现,以下是几种常见的方法,包括使用 String 类的方法、正则表达式以及 substring 方法。

方法 1:使用 String.indexOf() 和 substring()
这是最常用的方法,适用于简单场景。
截取指定字符之前的内容
String str = "Hello,World,Java";
char delimiter = ',';
int index = str.indexOf(delimiter);
if (index != -1) {
String result = str.substring(0, index); // "Hello"
System.out.println(result);
} else {
System.out.println("未找到指定字符");
}
截取指定字符之后的内容
String str = "Hello,World,Java";
char delimiter = ',';
int index = str.indexOf(delimiter);
if (index != -1) {
String result = str.substring(index + 1); // "World,Java"
System.out.println(result);
} else {
System.out.println("未找到指定字符");
}
截取指定字符之间的内容
String str = "Hello,World,Java";
char startDelimiter = ',';
char endDelimiter = ',';
int startIndex = str.indexOf(startDelimiter);
int endIndex = str.indexOf(endDelimiter, startIndex + 1);
if (startIndex != -1 && endIndex != -1) {
String result = str.substring(startIndex + 1, endIndex); // "World"
System.out.println(result);
} else {
System.out.println("未找到指定字符");
}
方法 2:使用 String.split()
适用于分割字符串并获取特定部分。
截取指定字符之前的内容
String str = "Hello,World,Java";
String[] parts = str.split(",");
if (parts.length > 0) {
String result = parts[0]; // "Hello"
System.out.println(result);
} else {
System.out.println("未找到指定字符");
}
截取指定字符之后的内容
String str = "Hello,World,Java";
String[] parts = str.split(",");
if (parts.length > 1) {
String result = String.join(",", Arrays.copyOfRange(parts, 1, parts.length)); // "World,Java"
System.out.println(result);
} else {
System.out.println("未找到指定字符");
}
方法 3:使用正则表达式
适用于更复杂的匹配规则。
截取指定字符之前的内容
import java.util.regex.*;
String str = "Hello,World,Java";
Pattern pattern = Pattern.compile("^(.*?),");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
String result = matcher.group(1); // "Hello"
System.out.println(result);
} else {
System.out.println("未找到指定字符");
}
截取指定字符之后的内容
import java.util.regex.*;
String str = "Hello,World,Java";
Pattern pattern = Pattern.compile(",(.*)");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
String result = matcher.group(1); // "World,Java"
System.out.println(result);
} else {
System.out.println("未找到指定字符");
}
方法 4:使用 StringUtils(Apache Commons Lang)
如果项目使用了 Apache Commons Lang,可以使用 StringUtils 提供的便捷方法。

截取指定字符之前的内容
import org.apache.commons.lang3.StringUtils; String str = "Hello,World,Java"; String result = StringUtils.substringBefore(str, ","); // "Hello" System.out.println(result);
截取指定字符之后的内容
import org.apache.commons.lang3.StringUtils; String str = "Hello,World,Java"; String result = StringUtils.substringAfter(str, ","); // "World,Java" System.out.println(result);
截取指定字符之间的内容
import org.apache.commons.lang3.StringUtils; String str = "Hello,World,Java"; String result = StringUtils.substringBetween(str, ",", ","); // "World" System.out.println(result);
| 方法 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
indexOf() + substring() |
简单截取 | 高效、无需额外依赖 | 需要手动处理索引 |
split() |
分割字符串 | 简单直观 | 可能产生数组,性能稍差 |
| 正则表达式 | 复杂匹配 | 灵活强大 | 语法较复杂 |
StringUtils |
便捷操作 | 代码简洁 | 需要引入额外依赖 |
选择合适的方法取决于具体需求,如果只是简单截取,推荐使用 indexOf() + substring();如果需要更复杂的操作,可以考虑正则表达式或 StringUtils。
