Java中如何从String字符串中移除已知的指定文本片段
Java移除字符串中固定前缀片段的实现方案
你可以根据使用的Java版本、以及是否确定固定片段一定出现在字符串开头,选择对应的实现方式:
- 确定固定片段一定是字符串前缀的场景,直接用
substring截取,性能最优
待移除的固定片段长度不需要手动计算,直接调用前缀字符串的length()方法获取即可,避免硬编码长度带来的维护问题:public class UrlProcessDemo { public static void main(String[] args) { String originalStr = "https://www.thetimes.co.uk/article/record-level-of-poorer-teens-aiming-for-a-degree-m6q6bfbq3"; String fixedSegment = "https://www.thetimes.co.uk/article/"; // 直接截取固定片段长度之后的内容 String target = originalStr.substring(fixedSegment.length()); // 输出结果:record-level-of-poorer-teens-aiming-for-a-degree-m6q6bfbq3 System.out.println(target); } } - 无法确定原字符串一定带该固定前缀的场景,先做前缀校验避免索引越界
用startsWith方法先判断前缀是否存在,再执行截取,不存在对应前缀时可以按业务需求返回原字符串或做其他处理:String target; if (originalStr.startsWith(fixedSegment)) { target = originalStr.substring(fixedSegment.length()); } else { target = originalStr; // 无匹配前缀时直接返回原字符串 } - Java 11及以上版本可以直接用内置的
stripPrefix方法,代码最简洁
该方法自带前缀匹配逻辑,没有匹配到对应前缀时会直接返回原字符串,不需要自己写判断:String target = originalStr.stripPrefix(fixedSegment); - 如果固定片段不是仅出现在开头,需要全局删除所有匹配的片段,用
replace方法即可:// 会替换原字符串中所有出现的固定片段,不是仅处理前缀 String target = originalStr.replace(fixedSegment, "");
注意:
replace方法会替换所有匹配的子串,如果你的需求只是移除开头的那一段固定前缀,优先选择前面三种方案,避免误删字符串其他位置出现的相同片段。
内容的提问来源于stack exchange,提问作者Dmitry Efremov
相关产品推荐
相关产品推荐

