
本文介绍在Java中高效提取从字符串开头到目标单词结尾的子串的方法,核心是结合indexOf()与substring(),避免遍历或正则开销,简洁且性能优越。
本文介绍在java中高效提取从字符串开头到目标单词结尾的子串的方法,核心是结合`indexof()`与`substring()`,避免遍历或正则开销,简洁且性能优越。
在实际开发中,经常需要从一段文本中截取“从开头到某个关键词结束”的部分。例如,给定字符串 "I am an Administrator of my building",要求提取 "I am an Administrator"(即包含完整单词 Administrator,且不截断该词)。最直接、高效的方式是利用 String.indexOf() 定位目标单词起始索引,再通过 substring(0, startIndex + word.length()) 精确截取。
✅ 推荐写法(简洁、安全、高效):
String sentence = "I am an Administrator of my building";
String target = "Administrator";
int startIndex = sentence.indexOf(target);
if (startIndex != -1) {
String result = sentence.substring(0, startIndex + target.length());
System.out.println(result); // 输出:I am an Administrator
} else {
System.out.println("目标单词未找到");
}
⚠️ 注意事项:
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
- indexOf() 返回 -1 表示未匹配,务必判空处理,否则 substring() 会抛出 StringIndexOutOfBoundsException;
- 该方法区分大小写;如需忽略大小写,可先用 toLowerCase() 统一转换(注意影响原始字符),或改用正则(但会牺牲性能);
- 不建议使用正则表达式(如 replaceAll("(.*?Administrator).*", "$1"))——虽一行可写,但创建 Pattern 对象、编译、匹配过程开销更大,且可读性差;
- 若目标词可能重复出现,indexOf() 默认返回首次匹配位置;如需最后一次,改用 lastIndexOf()。
? 总结:sentence.substring(0, sentence.indexOf(word) + word.length()) 是语义清晰、时间复杂度 O(n)、空间复杂度 O(1) 的最优解,兼顾可读性、健壮性与执行效率,适用于绝大多数场景。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










