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
相关产品推荐
相关产品推荐

