怎么实现01+1=02而不是01+1=2

动作需求 · 636 次浏览
落日画梁 创建于 2023-10-09 14:36

需求是:
[../07_render/$prj_$MM$DD_v01] 想要结尾版本号+1,变成[../07_render/$prj_$MM$DD_v02]
有时候可能会到两位数,并不想从v11变成 v011,但是在计算是01+1=2

需求产生的原因

使用C4D制作镜头预览时,是用自带的【创建动画预览】不好管理和使用,所以就用标准渲染器渲染当作预览。然后就产生了一问题,标准那边儿渲染mp4他不能自动加版本号。

 

因为不会编程
我现在的做法是用

  1. 文本处理把这两段分开变成[../07_render/$prj_$MM$DD_v] 和 [01]
  2. 然后用01+1
  3. 之后在和前半部分字符串合并,
  4. 输入到选定位置。

我在想能不能用if else实现 ,如果计算后的字符串长度不是2就再首位+“0”

大佬们有没有其他更好的方式,实现最初的需求。


回复内容
CL 2023-10-09 14:50
#1

可以用“赋值”模块使用下面的表达式实现对版本号的增加,text替换成自己使用的变量名,在赋值里输出给保存结果路径的变量:

$= 
var v = {text}.Substring({text}.Length-2);
var vNew = Convert.ToInt32(v) +1;
return {text}.Substring(0, {text}.Length-2) + vNew.ToString("00");




CL 最后更新于 2023-10-09 14:52
乐昂岚【接定制】 回复 CL 2023-10-09 15:53 :
会写代码就是好😭
落日画梁 回复 CL 2023-10-09 16:50 :
谢谢大佬,牛皮
咿呀杀杀 2023-10-09 14:52
#2

表达式 :

$= Regex.Replace({路径文本}@"\d+$", m => (int.Parse(m.Value) + 1).ToString("D2"))

落日画梁 回复 咿呀杀杀 2023-10-09 16:54 :

没看懂,采用了一楼的方法,谢谢大佬

CL 回复 落日画梁 2023-10-09 16:59 :

来自gpt的解释:

这段代码是使用.NET框架的正则表达式(Regex)库来处理一个字符串,通常可能是文件的路径或名称,并且在某种程度上增加路径或名称中的数字。我们逐步解释一下代码的每一部分:

  1. Regex.Replace

    • Regex.Replace 方法是.NET框架中的一个方法,用于替换正则表达式匹配的字符串中的文本。
  2. {路径文本}

    • 这是你想要处理的文本,可能是一个文件路径或名称。
  3. @"\d+$"

    • 这是正则表达式模式。\d 匹配一个数字,+ 表示一个或多个,$ 表示字符串的结尾。所以,\d+$ 会匹配字符串末尾的所有数字。
  4. m => (int.Parse(m.Value) + 1).ToString("D2")

    • 这是一个匿名函数,它作为 Regex.Replace 方法的第三个参数。当 Regex.Replace 找到一个匹配时,它会调用这个函数,传递一个匹配对象 m 到它。
    • m.Value 是匹配到的文本,这里是字符串末尾的数字。
    • int.Parse(m.Value) 将匹配到的文本(一个数字)转换为整数。
    • (int.Parse(m.Value) + 1) 将这个数字加1。
    • (int.Parse(m.Value) + 1).ToString("D2") 将结果转换回字符串,格式为两位数(如果结果是单数,它将在前面加上一个零)。

综上所述,这段代码将查找 {路径文本} 中末尾的数字,将其加1,然后替换回原始字符串中的数字,并确保结果是两位数。例如,如果 {路径文本}"file09.txt",则结果将是 "file10.txt"

落日画梁 回复 CL 2023-10-09 17:21 :

牛皮,大致了解了

落日画梁 2023-10-09 17:31
#3

动作地址,欢迎使用


https://getquicker.net/Sharedaction?code=23e8b127-acb4-406a-642a-08dbc86b2dc3

回复主贴