首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在groovy中用另一个字符串替换路径中的字符串

在groovy中用另一个字符串替换路径中的字符串
EN

Stack Overflow用户
提问于 2021-10-18 12:39:18
回答 2查看 197关注 0票数 0

我想从以下几个方面取代:

"stable_dev/201904_xx/text1/text2.zip“

"stable_dev/201904/text5/text6.war“

转入:

"stable_dev/new_value/text1/text2.zip“

"stable_dev/new_value/text5/text6.war“

我试过

代码语言:javascript
运行
复制
arrayList.toString().replaceAll("stable_dev/"+"[0-9a-zA-Z]*"+"[^a-zA-Z0-9]*"+"[0-9a-zA-Z]*"+"/", "stable_dev/new_value/"))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-19 04:42:57

这只是你的例子所特有的。其思想是搜索stable_dev/,然后定位到下一个/,然后用新值替换它。

代码语言:javascript
运行
复制
def str = "stable_dev/201904_xx/text1/text2.zip"

println str.replaceAll(/stable_dev\/.*?\//,"stable_dev/new_value/")​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

//Output:
//stable_dev/new_value/text1/text2.zip​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
票数 0
EN

Stack Overflow用户

发布于 2021-10-18 13:47:36

我会使用split来避免过于复杂的regexp:

代码语言:javascript
运行
复制
def replacer = { String replacement, String val ->
  def parts = val.split( /\d{6}_?([a-z0-9]{2})?/ )
  2 != parts.size() ? val : "${parts[ 0 ]}$replacement${parts[ 1 ]}"
}

def results = [
  'aaa',
  "stable_dev/201904_xx/text1/text2.zip",
  "stable_dev/201904/text5/text6.war"
].collect replacer.curry( 'new_value' )

assert results == [ 'aaa', 'stable_dev/new_value/text1/text2.zip', 'stable_dev/new_value/text5/text6.war' ]
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69616239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档