You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何实现移除字符串中匹配指定占位符模板的片段

你可以通过Java的正则表达式替换方法实现该需求,核心思路是匹配符合模板规则的目标片段,再将其替换为空字符串,最后处理残留的多余空格即可。

核心实现代码

public class RemoveTargetSegment {
    public static String removeBirthPlaceStr(String input) {
        // 正则匹配规则:匹配符合模板的完整片段+末尾可能存在的多余空格
        String regex = "My place of birth is [^.]+\\.\\s*";
        // 替换所有匹配内容为空后清理首尾空格
        return input.replaceAll(regex, "").trim();
    }

    public static void main(String[] args) {
        // 测试示例1:目标片段在末尾
        String str1 = "My name is MY_NAME. My place of birth is PLACE.";
        System.out.println(removeBirthPlaceStr(str1)); 
        // 输出:My name is MY_NAME.

        // 测试示例2:目标片段在中间
        String str2 = "My name is MY_NAME. My place of birth is PLACE. I speak ENGLISH.";
        System.out.println(removeBirthPlaceStr(str2)); 
        // 输出:My name is MY_NAME. I speak ENGLISH.

        // 测试示例3:目标片段在开头
        String str3 = "My place of birth is PLACE. I speak ENGLISH. My name is MY_NAME.";
        System.out.println(removeBirthPlaceStr(str3)); 
        // 输出:I speak ENGLISH. My name is MY_NAME.
    }
}

规则说明

  • 正则里的[^.]+对应模板中的%s占位符,会匹配除英文句号外的所有字符,适配任意占位符内容
  • 末尾的\\s*用于匹配目标片段后的多余空格,避免替换后出现连续的无效空格
  • 如果只需移除第一个匹配到的目标片段,把代码中的replaceAll改为replaceFirst即可
  • 如果你的业务场景中占位符本身会包含英文句号,可以调整正则为匹配到下一个大写字母开头的句子边界即可适配

内容的提问来源于stack exchange,提问作者niranj1997

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:15:04