自定义JavaScript字符串占位替换 发表于 2021-07-19 更新于 2022-05-20 分类于 JavaScript 本文字数: 1.1k 阅读时长 ≈ 1 分钟 API: 1String.prototype.t(...args) 使用示例: 1234567891011121314console.log('String: %t'.t('123'));//String: 123console.log('Number: %t'.t(456));//Number: 456console.log('Multi parameters: %t, %t, %t'.t('123', 456, { num: 123, str: '456' }));//Multi parameters: 123, 456, {"num":123,"str":"456"}console.log('占位符数量不足:%t'.t(123, 456, 'str'));//占位符数量不足:123console.log('占位符数量过多:%t, %t, %t, %t'.t({ a: 'aaa', b: 'bbb' }));//占位符数量过多:{"a":"aaa","b":"bbb"}, %t, %t, %t 实现源码 12345678910111213141516171819String.prototype.t = function(...args) { if (args.length === 0) { return this.toString(); } const template = '%t'; let str = this.toString(); for (let i = 0; i < args.length; i++) { let idx = str.indexOf(template); if (idx === -1) break; if (typeof args[i] === 'object') { args[i] = JSON.stringify(args[i]); } str = str.substr(0, idx) + args[i] + str.substring(idx + template.length, str.length); } return str;} 实现思路 字符串替换,将%t替换为参数列表中的参数 substr(start, length) substring(start, end)