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

Java中如何移除字符串单/双引号并截取最后引号前内容

解决Java中移除双引号并删除引号后内容的问题

你的代码问题在于直接把匹配到的引号内内容赋值给了整个字符串,导致引号前的前缀被完全覆盖,所以只得到了引号里的部分。下面给你两种可行的解决方案:

方案一:单次正则替换一步到位

用正则捕获引号前的内容和引号内的内容,直接替换掉引号及后续部分:

String regex = "^(.*?)[\"”](.*?)[\"”].*$";
payer.nameIst = payer.nameIst.replaceAll(regex, "$1$2");

正则说明:

  • ^ 匹配字符串起始位置
  • (.*?) 非贪婪捕获引号前的所有前缀内容
  • ["”] 匹配任意一种双引号(英文直引号"或中文弯引号”)
  • (.*?) 非贪婪捕获两个引号之间的目标内容
  • ["”] 匹配结尾的双引号
  • .*$ 匹配结尾引号之后的所有内容
  • 替换为$1$2后,就保留了前缀+引号内的内容,自动去掉了引号和后续部分

方案二:分两步处理(更直观)

先删掉最后一个引号后的所有内容,再移除所有剩余引号:

// 第一步:删除最后一个双引号及之后的所有内容
payer.nameIst = payer.nameIst.replaceAll("([\"”]).*$", "");
// 第二步:移除所有双引号
payer.nameIst = payer.nameIst.replaceAll("[\"”]", "");

步骤说明:

  1. 第一步正则([\"”]).*$定位到最后出现的双引号,删除该引号及后面的全部内容
  2. 第二步直接匹配所有双引号并替换为空,完成移除

两种方案都能处理你提到的两种引号场景:

  • 输入 BANK "BTB” AÇIQ SƏHMDAR CƏMİYYƏTİ → 输出 BANK BTB
  • 输入 "KAPİTAL BANK" AÇIQ SƏHMDAR CƏMİYYƏTİ → 输出 KAPİTAL BANK

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:24:33