javascript - 用查找表中的字符串替换值

标签 javascript

我正在尝试执行这样的代码:

value = value.replace(/{{(.*)}}/g, this.dataService.relationTable["\"$1\""]);

我想在周围有 {{ 和 }} 的字符串中捕获变量。然后我想使用该值来搜索名为 this.dataService.relationTable 的对象并找到等于正则表达式捕获值的键字符串。

有人知道我做错了什么吗?

示例关系表:

{C5: 200000, C7: 0, C6: 0, C8: "Site-Built", C26: 25, …}
C5
:
200000
C6
:
0
C7
:
0
C8
:
"Site-Built"
C11
:
4.25
C12
:
360
C13
:
3
C14
:
1000
C15
:
0
C16
:
0
C17
:
5000
C20
:
80
C21
:
8
C22
:
1000
C23
:
8
C24
:
0
C25
:
0
C26
:
25
C29
:
2000
C30
:
275
C31
:
250
C32
:
875
F4
:
"{{C5}}"
F5
:
"{{C7}}"
F6
:
"{{I21}}"
F7
:
"{{F24}}"
F8
:
"{{C29}}"
F9
:
"{{F4}} + {{F5}} + {{F6}} + {{F7}} + {{F8}}"
F11
:
"{{F9}}"
F12
:
"{{C6}}"
F13
:
"{{F11}} + {{F12}}"
F15
:
"{{C5}}"
F16
:
"{{C7}}"
F17
:
"{{C6}}"
F18
:
"{{F15}} + {{F16}} + {{F17}}"
F20
:
"{{F27}}"
F21
:
"{{C30}}"
F22
:
"{{C31}}"
F23
:
"{{C32}}"
F24
:
"{{F20}} + {{F21}} + {{F22}} + {{F23}}"
F26
:
"{{I11}}"
F27
:
"{{F26}} * 9 / 400"
I4
:
"{{F18}}"
I5
:
"{{F24}}"
I6
:
"{{C29}}"
I7
:
"{{C17}}"
I8
:
"{{I35}}"
I9
:
"{{I26}}"
I10
:
"{{C14}} * -1"
I11
:
"{{I4}} + {{I5}} + {{I6}} + {{I7}} + {{I8}} + {{I9}} - {{I10}}"
I13
:
"{{I11}}"
I14
:
"{{C11}}"
I15
:
"{{C12}}"
I16
:
undefined
I18
:
"{{I35}}"
I19
:
"{{C15}}"
I20
:
"{{C17}}"
I21
:
"{{I18}} + {{I19}} + {{I20}}"
I23
:
"{{F13}}"
I24
:
"{{C14}} * -1"
I25
:
"{{C13}}"
I26
:
"({{I23}} + {{I24}}) * {{I25}}"
I28
:
"{{C20}} * {{C21}}"
I29
:
"{{C22}} * {{C23}}"
I30
:
"{{C24}} * {{C25}}"
I31
:
"{{C16}} * -1"
I32
:
"{{C11}} * {{C26}} / 365"
I33
:
"{{C20}} * 12"
I34
:
"{{C24}} * 12"
I35
:
"{{I28}} + {{I29}} + {{I30}} + {{I31}} + {{I32}} + {{I33}} + {{I34}}"

示例值:

{{I35}}

在这种情况下,结果应该是 {{I28}} + {{I29}} + {{I30}} + {{I31}} + {{I32}} + {{I33}} + {{I34 }}

最佳答案

使用一个函数作为替换:

value = value.replace(/{{(.*)}}/g, (match, p1) => this.dataService.relationTable[p1]);

这里,值 p1 将采用正则表达式中第一个捕获组 (...) 中匹配的值。

关于javascript - 用查找表中的字符串替换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47146328/

相关文章:

javascript - 使用 JavaScript 在文本鼠标悬停时显示不同的弹出图像

javascript - 数据点未正确放置在 x 轴上

javascript - Plotly JavaScript - donut chart - Hoverinfo,尝试使用数组添加自定义定义 - 我的代码的小问题

javascript - 当我运行程序时,我的内存不足。有没有更好的方法来做到这一点,或者我是否创建了任何无限循环?

javascript - 在 Safari 中的 Canvas 页面 iFrame 中使用带有 JS SDK 的 Facebook Graph API 被破坏

javascript - 错误: Object doesn't support property or method 'indexOf'

javascript - 这在 Javascript "typeof(arguments[0])"中意味着什么

javascript - Vuejs - 使用 Prop 将数据从 parent 传递给 child

javascript - 放置一个 div 作为 :after of another

javascript - 功能组件渲染一次,类组件渲染两次