咨询:能否用Groovy实现带日期戳文件名的格式转换
当然可以实现!
作为Groovy新手,用字符串处理+正则表达式就能轻松搞定这个文件名转换需求,给你两种实用的实现方式:
方法一:拆分匹配后重组
这种方式更直观,适合新手理解每一步的处理逻辑:
def originalFileName = "saledata20180429" // 用正则把文件名拆成「前缀+年+月+日」四个部分 def matcher = originalFileName =~ /(.*)(\d{4})(\d{2})(\d{2})/ if (matcher.matches()) { def prefix = matcher[0][1] // 提取前缀:saledata def year = matcher[0][2] // 提取年份:2018 def month = matcher[0][3] // 提取月份:04 def day = matcher[0][4] // 提取日期:29 def newFileName = "${prefix}-${year}-${month}-${day}.txt" println newFileName // 输出结果:saledata-2018-04-29.txt }
方法二:一键替换(更简洁)
利用Groovy的replaceAll方法,用正则直接替换日期部分,一步到位:
def originalFileName = "saledata20180429" def newFileName = originalFileName.replaceAll(/(\d{4})(\d{2})(\d{2})/, '-$1-$2-$3.txt') println newFileName // 同样输出:saledata-2018-04-29.txt
小提示
如果你的文件名前缀不是固定的,只要日期部分是结尾的8位数字,这两种方法都能通用。如果前缀里也包含数字,可以微调正则表达式(比如指定匹配结尾的数字)来精准定位日期部分。
内容的提问来源于stack exchange,提问作者Ka Li
相关产品推荐
相关产品推荐

