我有一些javascript代码可以生成包含字符和整数的变量。
我需要将此字符串中的连续整数加在一起,同时不影响其他单个或后续的连续整数。
让我说我的意见是
GhT111r1y11rt
我需要输出:
GhT3r1y2rt
我将如何做到这一点?
答案 0 :(得分:7)
使用String#replace
方法进行回调,内部回调使用String#split
和Array#reduce
方法计算总和。
console.log(
'GhT111r1y11rt'.replace(/\d{2,}/g, function(m) { // get all digit combination, contains more than one digit
return m.split('').reduce(function(sum, v) { // split into individual digit
return sum + Number(v) // parse and add to sum
}, 0) // set initial value as 0 (sum)
})
)
\d{2,}
匹配2个或更多个数字重复,\d+
更好,因为我们不想替换单个数字。
答案 1 :(得分:0)
方法isNaN()在字符为数字时返回true,使用substr单独检查每个字符
答案 2 :(得分:0)
对于重复多次的相同数字,您可以这样做(如示例字符串中所示):
'GhT111r1y11rt'.replace(/(\d)\1+/g, function (m,g1) { return g1 * m.length;});
(\d)
捕获第一个数字
\1+
重复捕获的数字(来自第1组)