Java如何从字符串开头截取至指定单词末尾的子串?
Java字符串截取到指定单词末尾的高效实现方法
针对你的需求,其实你一开始想到的通过目标单词的结束索引调用substring就是最高效的方案之一,直接、低开销,代码也简洁:
String sentence = "I am an Administrator of my building"; String targetWord = "Administrator"; // 先找到目标单词的起始索引,加上单词长度得到结束位置 int endIdx = sentence.indexOf(targetWord) + targetWord.length(); String result = sentence.substring(0, endIdx);
为什么这个方案高效?
indexOf是String类的原生方法,底层直接操作字符数组,时间复杂度为O(n),性能极高;substring在JDK8及以前直接复用原字符串的字符数组(仅记录起始结束索引),JDK9+虽会复制字符数组,但也是底层高效操作,无多余计算开销。
更简洁的写法(适合代码简洁性优先、非高频调用场景)
如果追求代码更短,可使用正则匹配,但性能略逊于上述方案(正则引擎存在额外开销):
String result = sentence.replaceAll("(.*Administrator).*", "$1");
边界情况处理
如果目标单词可能不存在于原字符串中,建议加判断避免索引越界:
String sentence = "I am an Administrator of my building"; String targetWord = "Administrator"; int startIdx = sentence.indexOf(targetWord); if (startIdx != -1) { String result = sentence.substring(0, startIdx + targetWord.length()); // 处理截取结果 } else { // 目标单词不存在的分支逻辑 }
内容的提问来源于stack exchange,提问作者AutoTester999
相关产品推荐
相关产品推荐

