StrSubstitutor和StrUtil占位符字符串替换

news2024/11/22 13:39:21

目录

    • 一、commons-lang包下的StrSubstitutor
      • 1、使用场景一
      • 2、使用场景二
    • 二、hutoo包下的StrUtil
      • 1、使用场景一
      • 2、使用场景二
      • 3、使用场景三
    • 三、原生的三种方式

一、commons-lang包下的StrSubstitutor

StrSubstitutorcommons-lang包提供的一个字符串替换类,整体使用体验还是非常不错的。commons-lang包很多框架都有引用,很容易通过依赖传递到我们项目,所以有时候会出现我们根本没有引用这个包,但是却可以使用他包下的类。

1、使用场景一

public static void main(String[] args) {
    HashMap<String, String> objectObjectHashMap = new HashMap<>();
    objectObjectHashMap.put("name","张三");
    StrSubstitutor strSubstitutor = new StrSubstitutor(objectObjectHashMap);
    // hello在map当中不存在,所以直接原样输出了
    String replace = strSubstitutor.replace("${name}先生,${hello}");
    System.out.println(replace);
}

运行结果:

在这里插入图片描述

2、使用场景二

默认是通过${} 来做字符串替换的,我们可以修改符号。

StrSubstitutor strSubstitutor = new StrSubstitutor(objectObjectHashMap, "%(", ")");
public static void main(String[] args) {
    HashMap<String, String> objectObjectHashMap = new HashMap<>();
    objectObjectHashMap.put("name", "张三");
    StrSubstitutor strSubstitutor = new StrSubstitutor(objectObjectHashMap, "%(", ")");
    // hello在map当中不存在,所以直接原样输出了
    String replace = strSubstitutor.replace("%(name)先生,${hello:'我的 '}");
    System.out.println(replace);
}

运行结果

在这里插入图片描述

二、hutoo包下的StrUtil

再有就是我们也可以通过hutoo工具类当中的StrUtil来完成字符串的替换,hutoo可以说是近期非常火的工具类了,基本上项目都会引用他。

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.20</version>
</dependency>

1、使用场景一

public static void main(String[] args) {
    String str = "你好,{},我的大宝贝,{}";
    String format = StrUtil.format(str, "张三", "哈哈");
    System.out.println(format);
}

运行结果

在这里插入图片描述

2、使用场景二

这个跟上面的StrSubstitutor相比又简单了些,而且都是通过map来映射参数。

public static void main(String[] args) {
   String str = "你好,{name},我的大宝贝,{aaa}";
    HashMap<String, String> objectObjectHashMap = new HashMap<>();
    objectObjectHashMap.put("name","张三");
    String format = StrUtil.format(str, objectObjectHashMap);
    System.out.println(format);
}

运行结果

在这里插入图片描述

3、使用场景三

假如key为null,会原样返回对应的变量

public static void main(String[] args) {
    String str = "你好,{name},我的大宝贝,{aaa}";
    HashMap<String, String> objectObjectHashMap = new HashMap<>();
    objectObjectHashMap.put("name", "张三");
    objectObjectHashMap.put("aaa", null);
    // 默认ignoreNull这个参数就是为true
    String format = StrUtil.format(str, objectObjectHashMap, true);
    System.out.println(format);
}

运行结果:

在这里插入图片描述

设置ignoreNull为false就是忽略null。

 public static void main(String[] args) {
     String str = "你好,{name},我的大宝贝,{aaa}";
     HashMap<String, String> objectObjectHashMap = new HashMap<>();
     objectObjectHashMap.put("name", "张三");
     objectObjectHashMap.put("aaa", null);
     String format = StrUtil.format(str, objectObjectHashMap, false);
     System.out.println(format);
 }

运行结果

在这里插入图片描述

三、原生的三种方式

以上两种都是基于了第三方jar,下面这几种方式都是不需要任何依赖的,都是Java自带的。

public static void main(String[] args) {
    // 方式一
    String format = String.format("你好,%s,我的大宝贝,%s", "张三", "李四");
    System.out.println(format);

    // 方式二
    String format1 = MessageFormat.format("你好,{0},我的大宝贝,{1}", "张三", "李四");
    System.out.println(format1);

    // 方式三
    String replace = "你好,{0},我的大宝贝,{1}".replace("{0}", "张三").replace("{1}", "李四");
    System.out.println(replace);
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/703569.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis实战——短信登录(二)

Redis代替session redis中设计key 在使用session时&#xff0c;每个用户都会有自己的session&#xff0c;这样虽然验证码的键都是“code”&#xff0c;但是相互不影响&#xff0c;从而确保每个用户获取到的验证码只能够自己使用&#xff0c;当使用redis时&#xff0c;redis的ke…

MCU单片机智能控制落地扇解决方案

随着科技进步和消费升级&#xff0c;消费者对电风扇的智能化需求日趋强烈。为了快速响应市场需求&#xff0c;以更低的成本打造智能电风扇。 MCU单片机智能控制落地扇解决方案以灵动微MM32SPIN040C主控。 方案采用的主控MM32SPIN040工作频率可达48MHz&#xff0c;内置16KB Fl…

虹科分享 | 拒绝自燃和爆炸,AGV电池如何进行实时监控和预测性维护?

Automated Guided Vehicle简称AGV&#xff0c;通常也称为AGV小车、自动导引运输车或无人搬运车等&#xff0c;指装备有电磁或光学等自动导引装置&#xff0c;能够沿规定的导引路径行驶&#xff0c;具有安全保护以及各种移载功能的运输车&#xff0c;通常用可充电的蓄电池来作为…

JumpServer开源堡垒机安装配置

JumpServer开源堡垒机安装与配置 一、简介二、下载与安装2.1、下载2.2、安装2.3、其他 一、简介 JumpServer 堡垒机帮助企业以更安全的方式管控和登录各种类型的资产。 支持 官网地址&#xff1a;https://www.jumpserver.org/index.html JumpServer 采用分层架构&#xff0c;…

【SNMP服务】网络杂谈(11)之什么是SNMP服务?

#2023 博客之星评选已开启–成为城市领跑者# 涉及知识点 什么是 SNMP&#xff0c;SNMP的特点&#xff0c;SNMP的服务&#xff0c;SNMP服务运行。深入了解SNMP技术。 原创于&#xff1a;CSDN博主-《拄杖盲学轻声码》&#xff0c;更多内容可去其主页关注下哈&#xff0c;不胜感…

Vue启用unity3D的exe

&#x1f430;个人主页&#xff1a;张清悠 &#x1f466;个人简介&#xff1a;张清悠&#xff0c;字澄澈&#xff0c;号寻梦客&#xff0c;爱好旅行、运动&#xff0c;主攻前端方向技术研发&#xff0c;副攻Unity 3D、C、Python人工智能等 &#x1f4dd;个人寄语&#xff1a;学…

parcel运行终端报错Uncaught ReferenceError: parcelRequire is not defined解决方案

我们通过指令 npm install parcel-bundler安装的parcel 运行起来会有一个报错 换个版本就好了 打开项目终端 我们先执行 npm uninstall parcel-bundler将错误的版本给他干掉 然后执行 npm install parcel安装正确的版本 然后运行项目 在浏览器中访问地址就一切正常了

如何预防DDOS和CC攻击

在当今数字化世界中&#xff0c;网络安全成为各行各业亟需解决的重要问题。最近&#xff0c;由于DDoS&#xff08;分布式拒绝服务&#xff09;和CC&#xff08;恶意咨询&#xff09;攻击事件的频繁发生&#xff0c;网络安全进一步引起了人们的关注。 据可靠消息源透露&#xff…

【SpringBoot】一、SpringBoot3新特性与改变详细分析

前言 本文适合具有springboot的基础的同学。 SpringBoot3改变&新特性 一、前置条件二、自动配置包位置变化1、Springboot2.X2、Springboot3.X 三、jakata api迁移1、Springboot2.X2、Springboot3.X3、SpringBoot3使用druid有问题&#xff0c;因为它引用的是旧的包 四 新特…

hdfs删除后空间不是释放,trash回收机制

一、现象 hdfs删除后&#xff0c;3天了还不删除&#xff0c;故排查排查问题 二、排查过程及原理 Trash机制&#xff0c;叫做回收站或者垃圾桶&#xff0c;默认情况下是不开启的。启用 Trash 功能后&#xff0c;从 HDFS 中删除某些内容时&#xff0c;文件或目录不会立即被清除&a…

【独家揭秘】微信可以自动加好友自动打招呼啦!

最近客户好友做某书内容爆了&#xff0c;每天都引流很多人来加他的微信&#xff0c;基本每天都需要花大量时间去通过好友&#xff0c;导致没有时间去做后续的维护发展客户&#xff0c;于是找到我大吐苦水&#xff0c;问我有什么办法可以解决&#xff1f; 嘿&#xff0c;这不巧了…

Python 基本数据类型(七)

文章目录 每日一句正能量Set&#xff08;集合&#xff09;Dictionary&#xff08;字典&#xff09;结语 每日一句正能量 生活里的累&#xff0c;一半源于生活本身&#xff0c;一半源于我们对待生活的态度。当我们感觉疲惫的时候&#xff0c;记得提醒自己保持一种幸福感&#xf…

二叉树OJ题:LeetCode--144.二叉树的前序遍历

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下LeetCode中第144道二叉树OJ题&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; 数据结构与算法专栏&#xff1a;数据结构与算法 个 人…

考完啦,回归!

暑假加训&#xff01;&#xff01;&#xff01; 不能到时候被学弟比下去了!!! 冲冲冲&#xff01;&#xff01;&#xff01;

SpringBoot整合人大金仓(kingbase8)

因客户要求使用人大金仓数据库&#xff0c;因此最近在java适配人大金仓数据库&#xff0c;在此做下笔记&#xff0c;此为第三步&#xff0c;SpringBoot整合人大金仓&#xff08;kingbase8&#xff09; 1.创建与模式对应用户&#xff0c;如我所用模式为hhh-system&#xff0c;则…

RS-FAIRFRS: COMMUNICATION EFFICIENT FAIR FEDERATED RECOMMENDER SYSTEM

RS-FAIRFRS: COMMUNICATION EFFICIENT FAIR FEDERATED RECOMMENDER SYSTEM Anonymous authors Paper under double-blind review communication efficient fair federated recommender system ICLR 2023 1. What does literature study? 结合随机抽样和确定每轮通信中要抽样…

vmware总结

1、CD/DVD设置 如果设备状态没有勾选已连接&#xff0c;那么当挂载镜像的时候&#xff0c;就会提示找不到设备。

有没有好用的ai图片处理器?这几款软件都能实现ai图片处理

朋友们&#xff0c;我今天要和你们聊一聊一个非常有趣的话题——ai图片网站&#xff01;没错&#xff0c;你没听错&#xff0c;就是那种可以让你在瞬间找到想要的图片的神奇网站。想象一下&#xff0c;你需要一张火爆的表情包&#xff0c;或者一幅令人心旷神怡的风景图&#xf…

为什么高并发这么难?非停事故频频发生?一天宕机三次?【B站、唯品会也难幸免】我们该怎么做?

宕机事件 原因解析&#xff1a; 1、一方面故障是不可避免的&#xff0c;有人为的故障&#xff08;是人就容易出错的&#xff09;和非人为的故障&#xff08;机器 Failure&#xff09;。这些是无法避免的停机&#xff0c;还有有计划的停机&#xff0c;如发布新系统、升级维护、更…

PHP 的 Logo 为什么是大象?

因为大象是世界上最好的动物。 当然&#xff0c;这只是开玩笑&#xff0c;那么为什么PHP的LOGO是大象呢&#xff1f;还有哪些关于PHP的LOGO的有趣的事情呢&#xff1f; 吉祥物-大象 ElePHPant 是一款可爱的 PHP 吉祥物&#xff0c;其设计中有一头大象。 最初的LOGO 1998 年…