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

如何优化特定格式字符串转JS值的代码?技术需求咨询

字符串到JS表达式的转换方案

嘿,我刚好有处理这类模板解析的经验,给你理清楚这套字符串到JS表达式的转换规则,分基础和组合两种场景来看:

一、基础转换规则

1. 随机整数模板

  • 匹配格式:r[min,max]r(min和max为整数,且max ≥ min)
  • 转换逻辑:生成**min到max(包含两端)**的随机整数,对应JS表达式:
    (Math.floor(Math.random() * (max - min + 1)) + min)
    
  • 实际示例:r[10,55]r → (Math.floor(Math.random() * (55 - 10 + 1)) + 10)

2. 画布百分比模板

  • 匹配格式:%[percent;dimension]%(percent为数字,dimension取值w代表宽度、h代表高度)
  • 转换逻辑:计算画布对应维度的百分比值,对应JS表达式:
    • 当dimension为w时:(canvas.width / 100 * percent)
    • 当dimension为h时:(canvas.height / 100 * percent)
  • 实际示例:%[50;w]% → (canvas.width / 100 * 50)

二、组合转换规则(嵌套场景)

两种模板可以互相嵌套,处理顺序是先解析内层模板,再替换到外层模板中:

  • 示例:%[r[0,50]r;h]%
    1. 先处理内层的随机模板:r[0,50]r → (Math.floor(Math.random() * (50 - 0 + 1)) + 0)
    2. 将结果替换到外层百分比模板,最终得到:
      (canvas.height / 100 * (Math.floor(Math.random() * (50 - 0 + 1)) + 0))
      

如果要实现这个转换逻辑,你可以用正则表达式来匹配不同的模板格式,优先匹配嵌套的内层模板(比如先找r[.*]r的内容),替换后再处理外层的%[.*]%模板,循环直到没有可匹配的模板为止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:15:16