用数字替换字符串中的字母

时间:2021-04-04 03:52:00

标签: javascript string replace

我有这个字符串 '=F*G'

我想将其替换为数字 '=6*7'

我已经成功地使用此代码成功地用数字替换了字母

    var string = '=F*G'
        .toLowerCase().split('')
        .filter(c => c >= 'a' & c <= 'z')
        .map(c => c.charCodeAt(0) -  'a'.charCodeAt(0) + 1)
        .join(' ')

    console.log(string);

但此代码删除了“=”和“*” 用数字替换字母后,我需要帮助将它们保持在字符串中

2 个答案:

答案 0 :(得分:2)

您可以将 String#replace 与回调替换函数一起使用。这个替换函数可以使用 String#charCodeAt() 为字符串中的每个字母字符生成一个序数值。

console.log("=F*G".replace(/[A-Z]/g, m => m.charCodeAt() - 64));

如果您想匹配两种情况并为每个大写/小写字母生成不同的数字,请使用 [a-zA-Z]i 标志。如果您想对两种情况进行归一化以生成相同的数字,请在应用上面提供的代码之前先调用 String#toUpperCase()(或在您执行时使用 toLowerCase() 并相应地更改序数减法值 - 它不会没关系)。

答案 1 :(得分:1)

您不能过滤字符,否则它们不会在输出中合并在一起。试试这个。

    var string = '=F*G'
    .toLowerCase().split('')
    .map(c => {
        if (c >= 'a' && c <= 'z') {
            return c.charCodeAt(0) - 'a'.charCodeAt(0) + 1
        }
        return c;
    })
    .join('')

   console.log(string);
相关问题