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

Julia v1.8中实现字符串内数字替换为两倍值并删除'num'前缀的方法求助

Julia v1.8中实现字符串内数字替换为两倍值并删除'num'前缀的方法求助

我完全懂你现在的困扰——想在Julia 1.8里把字符串中num前缀后面的数字替换成它的两倍,同时删掉num,但之前试的几种写法都没成功对吧?

你之前的写法问题在于:直接用2*s"\1"或者在替换右侧直接做parse操作是行不通的,因为SubstitutionString没法直接和数值运算结合,而且这些表达式会在替换操作执行前就被计算,没法动态对应每个匹配到的数字。

正确的做法是用函数作为replace的第二个参数,让它动态处理每个匹配结果,具体代码如下:

replace("hello num12 text and num5 numbers", r"num([0-9]+)" => m -> string(2 * parse(Int, m[1])))

这段代码的工作逻辑是:

  • 正则表达式r"num([0-9]+)"匹配所有以num开头、后面跟着一串数字的内容,其中括号里的([0-9]+)会捕获数字部分作为第一个匹配组
  • 匿名函数m -> string(2 * parse(Int, m[1]))接收每个匹配对象m,取出捕获到的数字组m[1],把它转成整数后乘2,再转回字符串作为替换内容
  • 这样就自动删掉了num前缀,同时把数字替换成了它的两倍值

运行这段代码后,你就能得到预期的输出:

"hello 24 text and 10 numbers"

如果还有类似的动态替换需求,都可以用这种「正则匹配+函数处理」的方式,非常灵活~

备注:内容来源于stack exchange,提问作者Accumulator

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 13:08:10