replaceAll、replace、replaceFirst(字符串多个元素替换)

2023-10-27

一、替换字符串中的多个字符。

- 前言:Java中替换字符串可以用replace和replaceAll这两种。

区别是:
replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了就是字符串的意思)。
replaceAll的参数是regex或者char,即基于正则表达式的替换,例如,可以通过replaceAll(“\d”, “*”)将一个字符串所有的数字字符都换成星号,相同点是都是全部替换,即将源字符串中的某一字符或字符串全部换成指定的字符或字符串。
如果只想替换第一次出现的,可以使用replaceFirst(),这个方法也是基于正则表达式的替换,但与replaceAll()不同的是,只替换第一次出现的字符串。
另外,如果replaceAll()和replaceFirst()所用的参数据不是基于正则表达式的,则与replace()替换字符串的效果是一样的,即这两者也支持字符串的操作。**

1、将前端传过来的对象 {"A":"招标人","B":"投标人","C":"设计单位","D":"施工单位"} 转换为招标人#投标人#设计单位#施工单位 格式字符串存储到数据库中,对应的字段为 optionAll

     /**
     *
     * @param optionAll
     * @return 字符替换公方法
     */
    public char[] characterSubstitutionMethood(String optionAll){
        //{"A":"招标人","B":"投标人","C":"设计单位","D":"施工单位"}  替换  招标人#投标人#设计单位#施工单位
        String strOptionAll = (optionAll.replaceAll("\"","").substring(0,(optionAll.replaceAll("\"","")).length()-1)).substring(1);
       
 //字符替换,替换字符串中的引号
        String A = optionAll.replaceAll("\"","");
        System.out.println(A); //{A:招标人,B:投标人,C:设计单位,D:施工单位}
        //截取字符串中从下标[0,A.length()-1)字符
        String B = A.substring(0,(optionAll.replaceAll("\"","")).length()-1);
        System.out.println(B); //{A:招标人,B:投标人,C:设计单位,D:施工单位
        //截取字符串中下标为1后面的所有字符
        String C = B.substring(1);
        System.out.println(C); //A:招标人,B:投标人,C:设计单位,D:施工单位
        //替换字符中含有A,B,C,D....字符  将"A:招标人,B:投标人,C:设计单位,D:施工单位"  替换为   "招标人,投标人,设计单位,施工单位"
        String strOptionAllT =  strOptionAll.replaceAll("(?i)A:","")
                .replaceAll("(?i)B:","")  //加(?i)是为了不区别大小写
                .replaceAll("(?i)C:","")
                .replaceAll("(?i)D:","")
                .replaceAll("(?i)E:","")
                .replaceAll("(?i)F:","")
                .replaceAll("(?i)G:","")
                .replaceAll("(?i)H:","")
                .replaceAll("(?i)I:","")
                .replaceAll("(?i)J:","")
                .replaceAll("(?i)K:","")
                .replaceAll("(?i)L:","")
                .replaceAll("(?i)M:","")
                .replaceAll("(?i)N:","");
        //开辟一个数组存储替换之后的字符
        char[] charOptionAll = new char[strOptionAllT.length()];
        for (int i = 0; i < strOptionAllT.length(); i++) {
            if ((strOptionAllT.charAt(i)+"").equals(",")){ //将字符中所有英文“,”替换为#号。
                charOptionAll[i] ='#';
            }else {
                charOptionAll[i] = strOptionAllT.charAt(i);
            }
        }
        return charOptionAll; //招标人#投标人#设计单位#施工单位
    }

     //在业务中调用上述方法。
    @AutoLog(value = "t_society_problems-添加")
	@ApiOperation(value="t_society_problems-添加", notes="t_society_problems-添加")
	@PostMapping(value = "/add")
	public Result<String> add(@RequestBody TSocietyProblems tSocietyProblems) {
		String optionAll = tSocietyProblems.getOptionAll(); //optionAll
		if (StringUtils.isNotBlank(optionAll)){
			//数组转为字符串
			tSocietyProblems.setOptionAll(new String(new CharacterSubstitution().characterSubstitutionMethood(optionAll)));
			tSocietyProblemsService.save(tSocietyProblems);
			return Result.OK("SUCCESS");
		}
		tSocietyProblemsService.save(tSocietyProblems);
		return Result.OK("SUCCESS");
	}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

replaceAll、replace、replaceFirst(字符串多个元素替换) 的相关文章

随机推荐

  • DBN(深度置信网络)

    具有层次结构的数学算法 神经网络 到 深度神经网络DNN 限制深度波尔茨曼机 到 深度波尔茨曼机DBM 限制深度波尔茨曼机 到 深度置信网络DBN 还有其它的方法 鉴于鄙人才疏学浅 暂以偏概全 4 1深度神经网络 Deep neural n
  • 树转二叉树(有序树转换为二叉树)讲解

    1006 树转二叉树 Description 输入一颗普通有序树 将它转换为对应的二叉链表存储 然后输出该二叉树的先序和后序遍历序列 Input 包含多组测试数据 每组测试数据第1行为树的结点个数n 1 n 26 接下来包含n行 其中第i行
  • python 爬取下一页_如何使用Beautifulsoup在python中抓取下一页

    通过提取 转到最后一页 元素的page参数来确定最后一页 并通过 遍历每个维护web抓取会话的页面 import re import requests from bs4 import BeautifulSoup with requests
  • 【最短木板长度】

    题目描述 最短木板长度 小明有 n 块木板 第 i 1 i n 块木板长度为 ai 小明买了一块长度为 m 的木料 这块木料可以切割成任意块 拼接到已有的木板上 用来加长木板 小明想让最短的模板尽量长 请问小明加长木板后 最短木板的长度可以
  • Fiddler在PC/台式对Android进行抓包

    Fiddler是一个常用的http抓包工具 它能够记录电脑和移动端的进出数据 而且操作十分简便 下面主要介绍在台式机上Fiddler如何对Android进行数据抓包 本人使用的Fiddler版本为v5 0 文章主要知识点如下 1 手机连接台
  • Python读写操作Excel数据详解

    自从学了Python后就逼迫自己不用Excel 所有操作用Python实现 目的是巩固Python 与增强数据处理能力 这也是我写这篇文章的初衷 废话不说了 直接进入正题 1 前期准备 1 1 初识Excel Microsoft Excel
  • iphone备忘录突然没了_玩转这8个技巧,让你成为iPhone老司机

    最近精选君遇到了一件超级尴尬的事情 用苹果手机下载安装软件的时候 突然识别不出我的指纹 迫于无奈只好输入密码 可是尴尬的是 Apple ID的密码忘记的一干二净 不知道你是否也遇到过这样的窘境 今天精选君给大家分享8个苹果手机小技巧 让你避
  • EG3D: Efficient Geometry-aware 3D Generative Adversarial Networks [2022 CVPR]

    长期以来 仅使用单视角二维照片集无监督生成高质量多视角一致图像和三维形状一直是一项挑战 现有的三维 GAN 要么计算密集 要么做出的近似值与三维不一致 前者限制了生成图像的质量和分辨率 后者则对多视角一致性和形状质量产生不利影响 在这项工作
  • 这些 Shell 分析服务器日志命令集锦,收藏好

    自己的小网站跑在阿里云的ECS上面 偶尔也去分析分析自己网站服务器日志 看看网站的访问量 看看有没有黑阔搞破坏 于是收集 整理一些服务器日志分析命令 大家可以试试 1 查看有多少个IP访问 awk print 1 log file sort
  • React组件设计实践总结04 - 组件的思维

    在 React 的世界里 一切都是组件 组件可以映射作函数式编程中的函数 React 的组件和函数一样的灵活的特性不仅仅可以用于绘制 UI 还可以用于封装业务状态和逻辑 或者非展示相关的副作用 再通过组合方式组成复杂的应用 本文尝试解释用
  • Java并发编程实战——线程池ThreadPoolExecutor实现原理

    文章目录 为什么要使用线程池 线程池的工作原理 线程池的创建 BlockingQueue execute 方法 如何合理配置线程池参数 之前在 RabbitMQ池化方案中提到过线程池 本节我们加深理解 为什么要使用线程池 在实际使用中 线程
  • sessionID的本质、保存在哪里?

    一 客户端用cookie保存了sessionID 客户端用cookie保存了sessionID 当我们请求服务器的时候 会把这个sessionID一起发给服务器 服务器会到内存中搜索对应的sessionID 如果找到了对应的 session
  • 如何在ios真实设备上调试程序,真机测试软件信任问题

    所用机型为iPhone 13 本文主要讨论如何 信任开发人员 也就是app传到设备上后打不开的问题 全过程原链接奉上 https blog csdn net cunjie3951 article details 106923536 ops
  • docker查看日志的方式

    docker查看日志的几个方式 1 docker logs tail 1000 容器名称 查看容器前多少行的日志 推荐 2 docker 容器启动后 可以进入以下位置查看日志 var lib docker containers 容器ID 容
  • 【C语言】指针(一) — 指针的定义

    目录 一 什么是指针 二 指针变量的定义 三 指针变量的赋值 四 通过指针访问变量 一 什么是指针 以我的理解 指针就是存储地址的变量 在C语言中 对于变量的访问形式之一就是先求出变量的地址 然后再通过地址对它进行访问 这就是指针及指针变量
  • YoloV8改进策略:VanillaNet极简主义网络,大大降低YoloV8的参数

    文章目录 摘要 论文翻译 论文摘要 1 简介 2 普通的神经网络架构 3 普通网络的训练 3 1 深度训练策略 3 2 串联的激活函数 4 实验 4 1 消融研究 4 2 注意可视化 4 3 与SOTA体系结构的比较 4 4 COCO实验
  • 在一个普通的html文件中引入es6

    我们在日常开发中 如果我们使用es5则可以直接在浏览器里面写JavaScript脚本 一点问题也没有 但是在写es6语法的JavaScript代码的时候 我们就需要引入babel翻译器了
  • pytorch中的dropout

    为了防止过拟合 我们可以对网络实行dropout操作 有三种方法可以实现 torch nn functional dropout input p training self training 该种方法实现时必须标明training的状态为s
  • 测试学习13(正交表、测试用例力度、软件缺陷)

    正交表 从全面实验中挑选出有代表性的点进行测试 均匀分散 整齐可比 高效率 快速 经济的方法 正交排列法 正交实验设计 特点 均匀分散 齐整可比 正交表的概念 使用步骤 案例1 映射到选择好的正交表中 使用正交表的局限性 混合正交表 在实际
  • replaceAll、replace、replaceFirst(字符串多个元素替换)

    一 替换字符串中的多个字符 前言 Java中替换字符串可以用replace和replaceAll这两种 区别是 replace的参数是char和CharSequence 即可以支持字符的替换 也支持字符串的替换 CharSequence即字