javascript - 替换所有以冒号开头的字符串,例如快速路由路径

标签 javascript node.js express lodash

我有这样的字符串:

const a = '/example/:someItemUuid/hello'
const b = '/example/:someItemUuid/hello/:otherItemUuid'

const params = {
  someItemUuid: '12345',
  otherItemUuid: '67890'
}

我正在寻找一种简单的方法来通过:

buildUrl(a, params) 并获取 /example/12345/hello

buildUrl(b, params) 并获取 /example/12345/hello/67890

是否有一个简单的方法库可以做到这一点,或者使用lodash的简单方法?

最佳答案

您无需拆分和加入。您可以使用替换及其回调

enter image description here

const a = '/example/:someItemUuid/hello'
const b = '/example/:someItemUuid/hello/:otherItemUuid'
const params = {someItemUuid: '12345',otherItemUuid: '67890'}

let replaceValues = (str,params) =>
  str.replace(/(^|\/):(\w+)(?=\/|$)/g, (m, g1, g2) => g1 + (params[g2] || m))

console.log(replaceValues(a,params))
console.log(replaceValues(b,params))

<小时/>

如果您的环境也支持lookbehind,那么您可以使用

`(?<=^|\/):(\w+)(?=\/|$)

关于javascript - 替换所有以冒号开头的字符串,例如快速路由路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58636492/

相关文章:

javascript - Vue.Js,将值绑定(bind)到组件中的复选框

javascript - 谷歌地图及其标记

javascript - 另一个函数内的函数调用未执行

reactjs - 如何在 Express 中将 webpack-hot-server-middleware 与 Firebase 功能结合使用

javascript - 通过 Node.js mysql 查询的准备语句使用多个通配符

javascript - 将大型 txt 文件转换为任何结构化格式

node.js - 如何让 jasmine-ts 使用特定种子执行我的规范?

javascript - Node 的 module.exports 和 IIFE 混淆

debugging - 如何调试导致 100% cpu 使用的 node.js?

javascript - Express 路由文件中的 Socket.io