如何实现字符串内字母按数字指定次数重复?示例及疑问
字符串数字替换前序字母重复的实现方案
核心需求
将字符串中字母后的数字替换为该字母重复对应次数(数字代表额外重复次数,保留原字母),同时移除数字,例如:
输入:
I Lo1ve Co4ding
输出:I Loove Coooooding
方法一:正则表达式替换(简洁高效)
利用JavaScript的String.replace()方法结合正则匹配,一次性处理所有符合模式的字符组合。
代码实现
let word = 'I Lo1ve Co4ding'; let processedStr = word.replace(/(.)(\d)/g, (_, targetChar, repeatNum) => { // 将数字转成数值,原字母+额外重复次数 return targetChar.repeat(parseInt(repeatNum) + 1); }); console.log(processedStr); // 输出: I Loove Coooooding
原理说明
- 正则
/(.)(\d)/g:(.):捕获任意单个字符(即需要重复的目标字母),存入第一个捕获组(\d):捕获单个数字(重复次数),存入第二个捕获组g:全局匹配,遍历整个字符串找到所有符合"字母+数字"的组合
- 替换回调函数:
每次匹配到目标组合时,将捕获到的字母重复(数字值+1)次(原字母1次 + 额外重复数字次),用结果替换原"字母+数字"组合。
方法二:逐字符遍历(直观易懂)
如果对正则不太熟悉,可以通过遍历字符串逐个处理字符,逻辑更清晰。
代码实现
let word = 'I Lo1ve Co4ding'; let processedStr = ''; for (let i = 0; i < word.length; i++) { const currentChar = word[i]; // 检查下一个字符是否为数字 if (i < word.length - 1 && !isNaN(parseInt(word[i+1]))) { const repeatTimes = parseInt(word[i+1]); // 重复字符并添加到结果 processedStr += currentChar.repeat(repeatTimes + 1); // 跳过数字字符 i++; } else { // 非数字结尾的字符直接添加 processedStr += currentChar; } } console.log(processedStr); // 输出: I Loove Coooooding
原理说明
- 遍历字符串的每个字符,判断当前字符的下一个字符是否为数字
- 若是数字:计算重复次数,将当前字符重复对应次数后加入结果,同时跳过数字字符
- 若不是数字:直接将当前字符加入结果
内容的提问来源于stack exchange,提问作者Rizky Amanatama
相关产品推荐
相关产品推荐

