ts实现动态拼接字符串,实现类似 C# 的 string.Format的格式化字符串。ts,js动态给拼接字符串提供参数 电脑版发表于:2024/12/19 14:21 模板是这样的:"于${0}通过${1}课程体系《${2}》课程授课" 对于这种格式的模板字符串,可以使用一个简单的替换函数来处理,而不需要复杂的正则表达式转义。下面是一个处理这种模板的示例函数: ```typescript function formatString(template: string, ...values: any[]): string { return template.replace(/\$\{(\d+)\}/g, (match, indexStr) => { let index = parseInt(indexStr, 10); return values[index] !== undefined ? values[index] : ''; }); } let template = "于${0}通过${1}课程体系《${2}》课程授课"; let dataTime = '2024 年 12月 06 日'; let courseVersion = '<OEAC 14.0>'; let courseName = '直播运营与策划(V14.0.0)'; let descCn = formatString(template, dataTime, courseVersion, courseName); console.log(descCn); // 输出: 于2024 年 12月 06 日通过<OEAC 14.0>课程体系《直播运营与策划(V14.0.0)》课程授课 ``` 在这个函数中,我们使用了正则表达式 `/\$\{(\d+)\}/g` 来匹配所有的 `${n}` 形式的占位符。这个正则表达式中的 `\$` 匹配美元符号 `$`,`\{` 和 `\}` 分别匹配左大括号 `{` 和右大括号 `}`,而 `(\d+)` 是一个捕获组,用于匹配并捕获一个或多个数字。 在替换函数中,我们通过 `match` 参数获取到整个匹配的字符串(即 `${n}`),然后通过 `indexStr` 参数获取到捕获组中的数字字符串。我们将这个数字字符串转换为整数索引,并从 `values` 数组中获取对应的值进行替换。如果 `values` 数组中不存在对应的值,则替换为一个空字符串 `''`。