2017-02-13 117 views
-3

我正在學習通過javascript實現的qrcode的源代碼。 而我對getUTF8Length的實現感到困惑。 這裏是源代碼: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); 
} 

我想知道如何理解正則表達式,爲什麼加3的長度。

+1

歡迎來到SO。請訪問[幫助],看看有什麼和如何問。在這種情況下,您的問題不明確。你想要REGEX的擴展解釋嗎? – mplungjan

+0

謝謝,我是stackoverflow的初學者。對不起,我錯過了問規則。我改變了我的問題。 –

+0

如果可能,你還可以添加一個鏈接到源代碼 – jetpackpony

回答

0

正則表達式會發現所有%00-%FF並將它們轉換成 「一」

我不明白的聲明

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

+0

謝謝你,崇拜你,我完全明白現在。看來我應該多想一想。 –