JavaScript計(jì)算字符串實(shí)際長(zhǎng)度方法示例
計(jì)算字符串的實(shí)際長(zhǎng)度
雙字節(jié)字符(包括漢字在內(nèi))長(zhǎng)度計(jì)2,ASCII字符計(jì)1
方法1:使用match
export function getByteLenMatch(data) { let result = 0; for (let s of data) { result += s.match(/[^\\x00-\\xff]/ig) == null ? 1 : 2; } return result; }
方法2:使用replace
export function getByteLenReplace(data) { return data.replace(/[^\\x00-\\xff]/ig, "aa").length; }
測(cè)試代碼:
let testData = new Array(50000000).fill("哈").toString(); for (let i = 0; i < 3; i++) { console.time("getByteLenMatch"); getByteLenMatch(testData); console.timeEnd("getByteLenMatch"); console.time("getByteLenReplace"); getByteLenReplace(testData); console.timeEnd("getByteLenReplace"); }
性能比較(單位ms)
字符串長(zhǎng)度 | match | replace |
---|---|---|
50,000,000 | 8051 | 8626 |
50,000,000 | 9351 | 8019 |
50,000,000 | 10384 | 7512 |
10,000,000 | 1631 | 1783 |
10,000,000 | 1646 | 1343 |
10,000,000 | 1663 | 1372 |
5,000,000 | 799 | 728 |
5,000,000 | 822 | 806 |
5,000,000 | 884 | 645 |
1,000,000 | 165 | 128 |
1,000,000 | 166 | 143 |
1,000,000 | 170 | 113 |
500,000 | 84 | 58 |
500,000 | 83 | 54 |
500,000 | 86 | 61 |
100,000 | 20 | 7 |
100,000 | 18 | 5 |
100,000 | 20 | 5 |
50,000 | 11.79 | 3.01 |
50,000 | 10.39 | 2.68 |
50,000 | 11.99 | 2.82 |
10,000 | 4.13 | 0.60 |
10,000 | 4.32 | 0.59 |
10,000 | 5.48 | 0.58 |
5,000 | 1.88 | 0.31 |
5,000 | 1.36 | 0.33 |
5,000 | 2.71 | 0.31 |
1,000 | 1.67 | 0.07 |
1,000 | 0.21 | 0.07 |
1,000 | 1.02 | 0.06 |
500 | 0.0840 | 0.0322 |
500 | 0.0820 | 0.0332 |
500 | 0.0840 | 0.0320 |
100 | 0.0229 | 0.0100 |
100 | 0.0432 | 0.0149 |
100 | 0.0471 | 0.0161 |
在大數(shù)據(jù)量情況下,replace性能初次會(huì)劣于match,多次執(zhí)行后會(huì)優(yōu)于match,小數(shù)據(jù)量情況下,replace性能優(yōu)于match
以上就是JavaScript計(jì)算字符串實(shí)際長(zhǎng)度方法示例的詳細(xì)內(nèi)容,更多關(guān)于JavaScript計(jì)算字符串長(zhǎng)度的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于BootStrap與jQuery.validate實(shí)現(xiàn)表單提交校驗(yàn)功能
學(xué)習(xí)前臺(tái)后臺(tái)最開(kāi)始接觸的業(yè)務(wù)都是用戶注冊(cè)和登錄,下面通過(guò)本文給大家介紹BootStrap與jQuery.validate實(shí)現(xiàn)表單提交校驗(yàn)功能,感興趣的朋友一起學(xué)習(xí)吧2016-12-12CORS cross-origin resourse sharing跨域資源共享解決
這篇文章主要為大家介紹了CORS cross-origin resourse sharing跨域資源共享的解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04javascript cookie解碼函數(shù)(兼容ff)
javascript cookie解碼函數(shù)2008-03-03js手動(dòng)播放圖片實(shí)現(xiàn)圖片輪播效果
這篇文章主要為大家詳細(xì)介紹了js手動(dòng)播放圖片實(shí)現(xiàn)圖片輪播效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09HTML中用JS實(shí)現(xiàn)旋轉(zhuǎn)的圣誕樹(shù)
這篇文章介紹了HTML中用JS實(shí)現(xiàn)旋轉(zhuǎn)的圣誕樹(shù),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12JS組件庫(kù)AlloyTouch實(shí)現(xiàn)圖片輪播過(guò)程解析
這篇文章主要介紹了JS組件庫(kù)AlloyTouch實(shí)現(xiàn)圖片輪播組件過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05AutoJs4.4.1免費(fèi)版快速接通vscode調(diào)試腳本的操作方法
這篇文章主要介紹了AutoJs4.4.1免費(fèi)版快速接通vscode進(jìn)行調(diào)試腳本,首先下載AutoJs并安裝,下載完成后,將2個(gè)apk文件拷貝到手機(jī)安裝即可,接下來(lái)需要安裝插件,本文分步驟給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10