当前位置: 首页 > news >正文

解决`Illegal group reference: group index is missing`的两种方式

说明:记录使用String API的错误,报错信息如下:

java.lang.IllegalArgumentException: Illegal group reference: group index is missing
        at java.util.regex.Matcher.appendReplacement(Matcher.java:819) ~[?:1.8.0_402]
        at java.util.regex.Matcher.replaceAll(Matcher.java:955) ~[?:1.8.0_402]
        at java.lang.String.replaceAll(String.java:2223) ~[?:1.8.0_402]

场景

在使用String的这个API,来替换字符串的时候抛出的,如下:

    public static void main(String[] args) {
        String str = "我对钱不感兴趣";
        System.out.println(str.replaceAll("钱", "美金($)"));
    }

在这里插入图片描述

原因是使用了美元符号($),美元符号是在底层替换的时候,是有特殊含义的,不能出现在第二个参数里;

在这里插入图片描述

解决

方法一

可以在替换前,使用APIMatcher.quoteReplacement过一遍,如下:

    public static void main(String[] args) {
        String str = "我对钱不感兴趣";
        System.out.println(str.replaceAll("钱", Matcher.quoteReplacement("美金($)")));
    }

方法二

或者手动添加转义符,如下:

    public static void main(String[] args) {
        String str = "我对钱不感兴趣";
        System.out.println(str.replaceAll("钱","美金(\\$)"));
    }

两种效果一样,如果是确定的字符串,可以用方法二,手动转义,如果是不确定的,可以使用方法一;

http://www.dtcms.com/a/21237.html

相关文章:

  • 【linux学习指南】⽣产者消费者模型
  • python电影数据分析及可视化系统建设
  • 深度学习在天文观测中的应用:解锁宇宙的奥秘
  • `fi` 是 Bash 脚本中用来结束 `if` 条件语句块的关键字
  • 数位dp入门详解
  • [Vivado报错] [Common 17-55]‘set_property‘ expects at least one object
  • 【数据库维护】Clickhouse数据库维护关键系统表相关指标说明,支撑定位慢SQL及多实例场景下分析各实例运行情况
  • 【Java基础-46.1】Java 中创建自定义泛型类及其应用
  • 【机器学习】常见采样方法详解
  • AtCoder - arc101_b Median of Medians 分析与解答
  • 2009年下半年软件设计师上午真题的知识点整理(附真题及答案解析)
  • Kubernetes-master 组件
  • 25/2/16 <算法笔记> MiDas原理
  • ElasticSearch详解
  • 【开源免费】基于Vue和SpringBoot的美食烹饪互动平台(附论文)
  • 【HUSTOJ 判题机源码解读系列03】judge.cc 源码详细注释
  • 端到端测试利器:Playwright入门教程
  • 力扣 66.加一 (Java实现)
  • ROS应用之SwarmSim在ROS 中的协同路径规划
  • Baklib全场景云平台:一站式知识管理赋能企业效能升级
  • C++11 thread
  • 大模型应用开发书籍推荐
  • 对项目交接的一些思考
  • 通用知识库问答流程
  • vue2.0接入海康威视控件包V3.3.0——海康威视摄像头接入前端页面(webSDK包)模式
  • 【STM32】外部时钟|红外反射光电开关
  • 40、【OS】【Nuttx】OSTest分析(4):内存监控(二)
  • Python进制转换
  • inline关键字
  • effective-Objective-C第六章阅读笔记