我正在学习通过javascript实现的qrcode的源代码。 我对getUTF8Length的实现感到困惑。 这是源代码:
function _getUTF8Length(sText) {
var replacedText = encodeURI(sText).toString().replace(/\%[0-9a-fA-F]{2}/g, 'a');
return replacedText.length + (replacedText.length != sText ? 3 : 0);
}
我想知道如何理解REGEX以及为什么在长度上添加3。
答案 0 :(得分:0)
正则表达式将找到所有%00-%FF并将它们转换为" a"
我不理解声明
replacedText.length != sText
我希望那是
replacedText.length != sText.length
但我无法解释为什么他们会加3
function _getUTF8Length(sText) {
console.log(encodeURI(sText))
var replacedText = encodeURI(sText).toString().replace(/\%[0-9a-fA-F]{2}/g, 'a');
console.log(replacedText)
return replacedText.length + (replacedText.length != sText ? 3 : 0);
}
// Assuming a text of ABCD CR double bytes
var text = "ABCD \n张加涛";
console.log(_getUTF8Length(text))