Java中字符串占位替换、字符串拼接、字符串与Collection互转的方式

165 篇文章 ¥19.90 ¥99.00
本文介绍了Java中字符串的占位替换方法,如String.format和MessageFormat,以及字符串拼接的不同方式,包括StringBuilder、StringJoiner和Guava的Joiner。此外,还详细讲解了如何在字符串和Collection之间进行转换,提供了多种实用的转换示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景

字符串占位替换

1、String.format

最原始最基础的方式。

使用%来表示占位,后面跟上不同的标识符,用于限定这个占位符的参数类型,由jdk原生提供支持。

示例:

        String badao = String.format("hello:%s", "badao");
        System.out.println(badao);

2、MessageFormat

如果遇到一个参数需要替换模板中多个占位的场景,更友好的方式是MessageFormat,由jdk原生提供支持。

示例:

        String message = MessageFormat.format("hello:{0},your name is {0},your class is {1}","badao","class1");
        System.out.println(message);

字符串拼接

举例:将int数组转为英文逗号分割的字符串为例

首先初始化一个int数组

 &
### 实现 MyBatis XML 映射文件中判断字符串是否存在于集合 为了实现在 `MyBatis` 的 XML 映射文件中检查字符串是否存在于集合,可以利用动态 SQL 功能。具体来说,通过 `<if>` 和 `<foreach>` 标签来构建条件查询。 #### 使用 `<if>` 和 `<foreach>` 进行动态SQL查询 当需要验证某个字段值是否属于给定列表时,可以在 `SELECT` 或其他类型的语句里嵌入如下结构: ```sql <select id="findUsersByRoleNames" parameterType="map" resultType="hashmap"> SELECT * FROM users u WHERE EXISTS ( SELECT 1 FROM roles r WHERE r.user_id = u.id AND r.name IN <foreach item="roleName" index="index" collection="roleNames" open="(" separator="," close=")"> #{roleName} </foreach> ) </select> ``` 上述代码片段展示了如何定义一个名为 `findUsersByRoleNames` 的查询方法[^1]。此方法接收参数类型为 map 并期望其中含有键 `roleNames` 对应的角色名称数组或列表作为输入源数据用于比较。对于每一个角色名字,在子查询部分生成相应的占位符并最终形成完整的 `IN (...)` 表达式。 如果希望更灵活地处理传入的数据形式(例如直接传递单个字符串而非集合),则可以通过 Java 层面先转换成合适的格式再交给 MyBatis 处理;或者借助自定义函数/存储过程等方式完成逻辑运算后再返回结果集供上层调用者解析使用。 另外一种方式是在主表内直接进行匹配而不需要额外关联表格: ```sql <select id="checkStringInCollection" parameterType="java.util.Map" resultType="boolean"> SELECT CASE WHEN COUNT(*) > 0 THEN true ELSE false END AS exists_flag FROM some_table t WHERE t.some_column IN <foreach item="item" index="index" collection="listOfStrings" open="(" separator="," close=")"> #{item} </foreach>; </select> ``` 这段脚本同样适用于大多数场景下的存在性检测需求,并且能够适应不同的业务背景调整具体的表名(`some_table`)以及列名(`some_column`)等细节配置项[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霸道流氓气质

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值