javascript - 处理和替换双花括号内的文本
问题描述
我有一个 URL 字符串:
var url = https://url.com/{{query}}/foo/{{query2}}
我有一行代码可以接收一个字符串,然后在大括号内获取所有查询的数组:
var queries = String(url).match(/[^{\}]+(?=})/g);
回报:
queries = ['query', 'query2']
我有一个函数 ,parse(queries)
它处理这些查询并返回它们的结果列表:
results = ['resultOfQuery', 'resultOfQuery2']
我希望能够获取此列表,然后将 URL 字符串中的查询替换为其结果。这个例子的最终结果是:
url = https://url.com/resultOfQuery/foo/resultOfQuery2
我有两个不同的问题:
代码行中的正则表达式
String.match
只计算一组花括号,{something}
. 如何修改它以查找一组双花括号 {{something}}?我已经有了一系列结果。进行字符串替换的最佳方法是什么,以便将查询及其随附的每组双括号替换为其相应的结果?
解决方案
您可以使用以下模式替换,
{{(.+?)}}
{{
- 火柴{{
(.+?)
- 一次或多次匹配除换行符以外的任何内容
let url = "https://url.com/{{query}}/foo/{{query2}}"
let result = {'query': 'queryResult1', 'query2':'queryResult2' }
let replaceDoubleBraces = (str,result) =>{
return str.replace(/{{(.+?)}}/g, (_,g1) => result[g1] || g1)
}
console.log(replaceDoubleBraces(url,result))
注意:-我在这里使用结果作为对象,因此查找和替换值变得容易,如果您可以更改解析函数,请考虑从解析返回一个对象
推荐阅读
- javascript - 名称属性在动态添加/删除输入字段功能中不起作用
- python - json.dump 不转储任何东西,给我留下一个空文件| Python
- django - 如何使用信号对其他模型进行更改
- firebase - Flutter Firestore 针对不同客户的不同视图
- google-analytics - Google 标签管理器 - 从另一个标签管理器事件中获取 GA4 事件值
- python - 为什么我不能将 fruits.sort() 分配给排序变量?
- java - 为什么堆数组容量的大小+1
- haskell - 如何为超出其范围的刚性类型变量重现 GHC 的类型错误?
- python - 张量流和 keras 中的多边形图像
- python - 在 Python 中将 3D numpy 数组转换为实例列表 (instance_dict={ "instance_key_1": "value", ...})