Groovy中按预定义模式拆分解析字符串并转换格式的方法
Groovy 固定长度字符串拆分转指定格式实现方法
针对你提出的8位日期字符串"20210819"转"08/19/2021"的需求,Groovy有两种常用实现方案:
方案1:字符串下标切片拆分(通用字符串拆分场景)
Groovy原生支持字符串下标范围取值,写法非常简洁,不需要引入额外依赖:
String value = "20210819" // 按规则拆分后拼接:[4-5位月份]/[6-7位日期]/[0-3位年份] String targetFormat = "${value[4..5]}/${value[6..7]}/${value[0..3]}" // 输出结果为 08/19/2021
使用该方法前建议先校验字符串长度是否为8位,避免下标越界,示例校验逻辑:
if (value?.length() == 8) { // 执行转换逻辑 } else { // 自定义异常/默认值处理 }
方案2:日期格式化工具转换(日期类字符串专用场景)
如果确认拆分的字符串是合法日期格式,用JDK自带的日期格式化工具处理更规范,还可以自动校验日期合法性:
import java.time.LocalDate import java.time.format.DateTimeFormatter String value = "20210819" // 定义输入、输出格式模板 DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyyMMdd") DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy") // 解析后转目标格式 String targetFormat = LocalDate.parse(value, inputFormatter).format(outputFormatter)
如果输入的字符串不符合日期规则(比如月份为13、日期为32等),该方法会抛出解析异常,适合需要数据校验的业务场景。
内容的提问来源于stack exchange,提问作者M-A Charlotte
相关产品推荐
相关产品推荐

