You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Groovy优雅截取URL中最后一个点之前的部分?

优雅的Groovy方式截取URL最后一个"."之前的部分

给定原始URL字符串:

https://my.reportUrl.com/scans#~%2528cicd_scan~%2527800172eb-d004-4237-b8e6-797bde26a1ab%252A2c2025-02-04T20%2525%25252A3a16%2525%25252A3a38.511117722Z%2527%2529

需要提取最后一个.之前的部分,这里提供几种比tokenize(".")拼接更优雅的Groovy实现:

方法1:使用lastIndexOf + substring(推荐,性能最优)

直接定位最后一个.的位置,截取前半部分:

def originalUrl = "https://my.reportUrl.com/scans#~%2528cicd_scan~%2527800172eb-d004-4237-b8e6-797bde26a1ab%252A2c2025-02-04T20%2525%25252A3a16%2525%25252A3a38.511117722Z%2527%2529"
def targetPart = originalUrl.substring(0, originalUrl.lastIndexOf('.'))

这种方式只需要一次遍历找到最后一个.的索引,操作简洁高效,适合大多数场景。

方法2:使用正则表达式替换

通过正则匹配最后一个.及其后面的所有内容,替换为空字符串:

def targetPart = originalUrl.replaceAll(/\.[^.]*$/, '')

正则表达式说明:

  • \.:匹配字面量.
  • [^.]*:匹配任意数量的非.字符
  • $:锚定到字符串结尾
    这种写法更简洁,即使原字符串中没有.,也不会报错(直接返回原字符串)。

方法3:兼容无.的场景(增强版)

如果需要处理原URL中可能没有.的情况,避免lastIndexOf返回-1导致的异常,可以加个判断:

def targetPart = originalUrl.contains('.') ? originalUrl.substring(0, originalUrl.lastIndexOf('.')) : originalUrl

内容的提问来源于stack exchange,提问作者Chris F

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 13:02:38