执行getUTF8Length

时间:2017-02-13 07:45:10

标签: javascript

我正在学习通过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。

1 个答案:

答案 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))