杰瑞科技汇

Java如何截取字符串到指定字符?

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

Java如何截取字符串到指定字符?-图1
(图片来源网络,侵删)

方法 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 提供的便捷方法。

Java如何截取字符串到指定字符?-图2
(图片来源网络,侵删)

截取指定字符之前的内容

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

分享:
扫描分享到社交APP
上一篇
下一篇