StrSubstitutor和StrUtil占位符字符串替换

2023-11-11

一、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);
}

运行结果

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

StrSubstitutor和StrUtil占位符字符串替换 的相关文章

随机推荐

  • IDEA常用配置之代码自动格式化删除无用导入

    文章目录 IDEA常用配置之代码自动格式化删除无用导入 配置步骤 安装google java format 安装Save Actions 自动优化导包选项 检查行分隔符 缩进大小 IDEA常用配置之代码自动格式化删除无用导入 配置步骤 安装
  • Mac安装brew

    终极方法 不需要代理 百分百成功运行 bin zsh c curl fsSL https gitee com cunkai HomebrewCN raw master Homebrew sh 运行结果如下
  • AD 多边形 圆形 快速覆铜

    1 先确认你的板框 如下图 在Keep Out Layer 层 使用shift S键隐藏其他的层 2 全选板框 按T G M 输入法英文状态下 或手动选择 工具 多边形填充 多边形管理器 进入下图状态 选择图上标志的地方 选择板外形 如下图
  • 机器学习 day35(决策树)

    决策树 上图的数据集是一个特征值X采用分类值 即只取几个离散值 同时也是一个二元分类任务 即标签Y只有两个值 上图为之前数据集对应的决策树 最顶层的节点称为根节点 椭圆形节点称为决策节点 矩形节点称为叶子节点 决策树学习算法的工作是 在所有
  • Jetson Nano 40 pin 功能介绍

    40 根引脚主要分成GPIO General Purpose I O 通用功能与SFIO Special Function I O 特定功能 一 SFIO 18根 1 5V 直流电输入 输出 脚位 2 4 在排针脚塑料使用 红色 标识 2根
  • Java SE 16 record 类型说明与使用

    Java SE 16 record 类型说明与使用 作者 Grey 原文地址 博客园 Java SE 16 record 类型说明与使用 CSDN Java SE 16 record 类型说明与使用 说明 record 是 Java SE
  • Python3 爬取PAT个人乙级题所有答案代码

    Python3 爬取PAT个人乙级题所有答案 进入PAT乙级题题目页面 下面是链接 https pintia cn problem sets 994805260223102976 problems type 7 点开两个题目 观察两个链接有
  • 实验吧——认真一点!

    coding utf8 import requests import urllib 设置代理 用于调试过程中抓包分析 proxies http http localhost 9008 https http localhost 9008 he
  • 使用eclipse快速全局替换指定字符串

    1 按住 Ctrl H 调出全局搜索框 选择 File Search 文件搜索栏 2 输入需要搜索的字段和文件类型 点击下方的 Replace 按钮 如果搜索到对应的结果 则会弹出替换界面 此时输入需要替换的字段即可 具体操作如下图所示
  • Vue2 新手上路无处不在的特殊符号,让人傻傻分不清 “:”、“.”、“@”、“#” 、“{{}}“ 、“$“,‘$bus‘,‘$event‘

    背景 刚刚学vue没多久 经常分不清情况什么时候用什么符号 是指令 v bind 的缩写 是修饰符 是指令 v on 的缩写 它用于监听 DOM 事件 是v slot的缩写 插值语法 Vue 实例还暴露了一些有用的实例属性与方法 它们都有前
  • SG-Former:具有进化Token重新分配的自引导Transformer

    文章目录 摘要 1 简介 2 相关研究 3 方法 3 1 概述 3 2 自引导注意力 3 3 混合尺度注意力 3 4 Transformer块 3 5 Transformer架构变体 4 实验 4 1 ImageNet 1K的分类 4 2
  • TensorRT C++ 序列化serialize / 反序列化deserialize

    序列化Engine serialize the engine then close everything down const std string engine file tensorrt mnist trt nvinfer1 IHost
  • [数据结构复习]广义表

    1 形式 类似于 A B C D E F 2 广义表的存储 链表 每个节点的结构为 type 0表示附加头节点 1表示原子节点 2表示子表节点 data type 0时存放引用计数 1时存放data 2时存放指向子表表头的指针 link t
  • laravel middleware 中间件原码分析 之array_reduce getSlice

  • Linux下Git与GitHub的零基础快速入门(一)

    一 写在前面 Git 是一个开源的分布式版本控制系统 用于敏捷高效地处理任何或小或大的项目 GitHub是一个面向开源及私有软件项目的托管平台 因为只支持Git作为唯一的版本库格式进行托管 故名GitHub 基本功能作为开源代码库以及版本控
  • Win10 DNS解析失败解决方法

    概要 最近在使用win10系统的过程中 无法获取dns报错 上不了网 经过一番折腾 最终在用下面 的方法 解决了问题 第二步很关键 完成步一下步骤重启电脑应该就可以上网了 第一步 使用 ipconfig flushdns 命令刷新DNS解析
  • mysql的事务

    事务是什么 事务将数据库从一种一致性状态转换为另一种一致性状态 事务可由一条非常简单的SQL语句组成 也可以由一组复杂的SQL语句组成 在数据库提交事务时 可以确保要么所有修改都已经保存 要么所有修改都不保存 事务是访问并更新数据库各种数据
  • PaddleDetection中一些特色模型介绍

    CBNet 论文题目 CBNet A Novel Composite Backbone Network Architecture for Object Detection 论文地址 https arxiv org abs 1909 0362
  • GLES3.0中文API-glCompressedTexImage3D

    名称 glCompressedTexImage3D 以压缩格式指定三维纹理图像 C 规范 void glCompressedTexImage3D GLenum target GLint level GLenum internalformat
  • StrSubstitutor和StrUtil占位符字符串替换

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