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

如何删除String字符串中两个指定字符之间的内容

如何删除String类型字符串中两个特定字符/字符序列之间的内容

你提到的参考场景如下:

原始字符串:"Hello <>Remove this String<> how are you?"
期望处理结果:"Hello <><> how are you?"


实现方案

方案1:正则表达式替换(推荐,绝大多数编程语言通用)

这是最便捷的实现方式,核心思路是用非贪婪匹配定位两个分隔符中间的内容,替换时保留前后的分隔符即可。
针对示例中分隔符为<>的场景,匹配规则为(<>).*?(<>),替换值为两个捕获组的拼接即可,不同语言的捕获组引用语法略有差异,常见语言的代码示例如下:

  • Java 代码示例
String originalStr = "Hello <>Remove this String<> how are you?";
// $1对应第一个捕获的<>, $2对应第二个捕获的<>
String processedStr = originalStr.replaceAll("(<>)\\s*.*?(<>)", "$1$2");
  • Python 代码示例
import re
original_str = "Hello <>Remove this String<> how are you?"
# \1对应第一个捕获的<>, \2对应第二个捕获的<>
processed_str = re.sub(r'(<>).*?(<>)', r'\1\2', original_str)
  • JavaScript 代码示例
const originalStr = "Hello <>Remove this String<> how are you?"
// $1对应第一个捕获的<>, $2对应第二个捕获的<>
const processedStr = originalStr.replace(/(<>)`.*?`(<>)`/g, '$1$2')

注意事项

  • 如果你的分隔符是正则元字符(如.、*、?、$、^等),需要在正则中添加转义符\,比如分隔符为$时,正则要写为(\\$).*?(\\$)
  • 非贪婪匹配.*?可以保证多对分隔符场景下不会跨对删除内容,比如原始字符串为a<>b<>c<>d<>时,处理后会得到a<><>c<><>

方案2:手动遍历实现(适合分隔符逻辑特殊、正则无法匹配的场景)

如果分隔符存在动态变化、嵌套等特殊规则,可以自己遍历字符串处理,核心逻辑如下:

  1. 初始化结果字符串、分隔符匹配计数器、进入删除区间的标记位
  2. 逐字符遍历原始字符串,先判断当前位置是否匹配分隔符
  3. 第一次匹配到分隔符时,标记进入删除区间,先把分隔符拼接到结果中
  4. 处于删除区间内的字符直接跳过,直到第二次匹配到分隔符,标记退出删除区间,把第二个分隔符拼接到结果中
  5. 不在删除区间内的字符直接拼接到结果中即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:24:07