在JavaScript中没有正确执行计算



我有以下代码,将输入字段中的字符转换为其他字符(即,输入e或e并将其转换为3,同样用于t或t转换为7)。
我也在计算被转换的字符的百分比,但我的计算没有正确执行,想知道是否有人可以帮助这一点。
例如,如果有人输入一个像373这样的字符串,它将不会转换字符(如预期的那样),但是转换的字符数将是3,而它们应该是0。

function ReplaceChars() {
var json         = JSON.parse(localStorage.getItem("registration"));
var characters   = json['charsEntered'];
var total        = "";
var convertedPct = 0;
const result = characters
.replaceAll(/e|E/g,"3")
.replaceAll(/t|T/g,"7")
total = characters.length;
let x = Number((result.match(/3|7/g)||[]).length);
let y = Number(total);
convertedPct      = (x/y)*100
roundedPercentage = convertedPct.toFixed(2);
$("#charsConverted").val(result);
$("#convertedChars").val(x);
$("#totalChars").val(y);
$("#pctChars").val(roundedPercentage + "%");
}

您可以在替换也会计数的字符时传递一个函数

let totalReplacements = 0;
characters
.replace(/e|E/g, () => {
totalReplacements ++; 
return '3';
})
.replace(/t|T/g, () => {
totalReplacements ++; 
return '7'
})

现在totalrepalments将保存已完成的替换的总数。

convertedPct      = (totalReplacements / characters.length) * 100
roundedPercentage = convertedPct.toFixed(2);

您正在匹配结果,其匹配的值可能是更改或未更改的字符的混合。源文件中匹配的值都将被更改。

变化:let x = Number((result.match(/3|7/g)||[]).length);

To:let x = (json.charsEntered.match(/[etET]/g)||[]).length;

最新更新