js計算字符串大小存儲所占字節數

JavaScript中,計算字符串所占的大小(占用的字節數)并不直接,但可以通過一些方法間接得到。
我們需要知道一個前提,英文字母 lenght 和字節數是一樣的:都是1,而中文 lenght=1字節數=2。因此,需要把中文字符的字節數計算出來,方法如下。

一、利用 Blob 對象

把字符串裝入 Blob 對象中,該Blob對象的size屬性就是字符串的大小。

function getStringSize(str) {return new Blob([str]).size
}// test
console.log(getStringSize('a一'))
// 4

Blob是一個裝著二進制數據的容器對象。Blob 對象表示一個不可變、原始數據的類文件對象。它的數據可以按文本或二進制的格式進行讀取,也可以轉換成 ReadableStream 來用于數據操作。

Blob 構造函數主要有兩個參數:

參數一:存放文件原始數據的可迭代對象,一般放數組。數組中可以存放各種類型的文件數據格式,例如BufferBlobString等等。

Blob 屬性:

size:只讀屬性,Blob中的字節數。

二、利用字符串替換

計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1)

// 原理:把中文字符替換成2個英文字母,那么字節數就是2
// \u0000這個表示的是unicode編碼
function getStringSizeByReplace(str) {// 匹配雙字節字符(包括漢字在內):[^\u0000-\u00ff]return str.replace(/[^\u0000-\u00ff]/g, 'aa').length
}// test
console.log(getStringSizeByReplace('a一'))
// 3

轉為更常見的存儲單位 MB KB

// 將字節長度轉換為千字節(KB)
function b2k(bytes) {return bytes / 1024
}// 將字節長度轉換為兆字節(MB)
function b2m(bytes) {return bytes / (1024 * 1024)
}

字符串存儲大小的應用

計算localstorage最大存儲容量、已用容量、剩余容量。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/16508.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/16508.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/16508.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

golang sqlite主從數據同步插件開發

### golang sqlite主從數據同步插件開發思路 參考Mysql的主從同步機制,Mysql是產生binlog,然后把binlog日志同步到從服務上。 同理,我們按sql執行順序記錄所有的增刪改查的sql語句,然后調用接口把sql語句傳到從服務上執行。 數…

關于軟件設計模式的理解

系列文章 關于時間復雜度o(1), o(n), o(logn), o(nlogn)的理解 關于HashMap的哈希碰撞、拉鏈法和key的哈希函數設計 關于JVM內存模型和堆內存模型的理解 關于代理模式的理解 關于Mysql基本概念的理解 關于軟件設計模式的理解 文章目錄 前言一、軟件設計模式遵循的六大原則…

前端面試題日常練-day35 【面試題】

題目 希望這些選擇題能夠幫助您進行前端面試的準備,答案在文末。 1. 以下哪個是使用jQuery選擇所有具有CSS類名"myClass"的元素的正確語法? a) $(".myClass") b) $("myClass") c) $("#myClass") d) $("…

FURNet問題

1. 為什么選擇使用弱監督學習? 弱監督學習減少了對精確標注數據的依賴,這在醫學圖像處理中尤為重要,因為高質量標注數據通常需要大量專業知識和時間。弱監督學習通過利用少量標注數據或粗略標注數據來訓練模型,降低了數據準備的成…

元組推導式

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 使用元組推導式可以快速生成一個元組,它的表現形式和列表推導式類似,只是將列表推導式中的“[]”修改為“()”。例如&#xf…

python深入解析字符串操作的八大神技

新書上架~👇全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目錄 一、字符串的長度與切片 示例代碼 二、去除多余的空格 示例代碼 三、字符串的開頭與包含…

元組的創建和刪除

目錄 使用賦值運算符直接創建元組 創建空元組 創建數值元組 刪除元組 自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 元組(tuple)是Python中另一個重要的序列結構&#…

JavaScript 獲取 HTML 中特定父元素下的子元素

JavaScript 獲取 HTML 中特定父元素下的子元素 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>查找子元素示例</title> </head> <body><div id"parent"><p&…

CTF-web-攻防世界-2

1、newscenter (1)、訪問網站&#xff0c;一個搜索欄&#xff0c;像是SQL注入漏洞&#xff0c;brup抓包嘗試一下。 輸入2/0、一個單引號、兩個單引號、一個雙引號、兩個雙引號等。發現只有一個單引號時&#xff0c;響應包content-length字段有非常明顯的變化為0。說明有可能是…

關于堆排序

今天我們不刷力扣了&#xff0c;我們來復習&#xff08;手撕&#xff09;一下數據結構中的八大排序算法之一&#xff0c;堆排序 基本概念&#xff1a; 堆是一種特殊的樹形數據結構&#xff0c;即完全二叉樹。 堆分為大頂堆和小頂堆&#xff1a; 大頂堆&#xff1a;每個節點的值…

OrangePi KunPengPro | 開發板開箱測評之學習與使用

OrangePi KunPengPro | 開發板開箱測評之學習與使用 時間&#xff1a;2024年5月23日20:51:12 文章目錄 OrangePi KunPengPro | 開發板開箱測評之學習與使用概述1.參考2.資料、工具3.使用3-1.通過串口登錄系統3-2.通過SSH登錄系統3-3.安裝交叉編譯工具鏈3-4.復制文件到設備3-5.第…

【組合數學】常考試題答案

一、單項選擇題&#xff08;每小題3分&#xff0c;共15分&#xff09; 1. 用3個“1”和4個“0”能組成&#xff08; &#xff09;個不同的二進制數字。 A. 35 B. 36, C. 37, D. 38 2. 整除300的正整數的個數為&#xff08;  &#xff09;。 A. 14…

Anaconda+CUDA+CUDNN+Pycharm+Pytorch安裝教程(第一節 Anconda安裝)

1.選擇和對應的anconda版本 官網地址&#xff1a;Index of / (anaconda.com) 下載地址&#xff1a;Index of /anaconda/archive/ | 清華大學開源軟件鏡像站 | Tsinghua Open Source Mirror 2.安裝流程 (1)下載安裝包 (2)點擊next &#xff08;3&#xff09;點擊I agree &a…

解決Flutter位于懸浮窗口時,應用Logo不更新問題

問題描述 我已經更換了應用Logo&#xff0c;但是發現應用處于懸浮窗口時&#xff0c;logo還是更改之前的&#xff1f;下面的圖片只是示意。 解決方案 終端命令 rm -rf ~/Library/Developer/Xcode/DerivedData2.xcode視圖內解決 先在頂部找到 Xcode --> Setting --> Lo…

操作系統入門系列-MIT6.828(操作系統工程)學習筆記(二)----課程實驗環境搭建(wsl2+ubuntu+quem+xv6)

MIT6.S081&#xff08;操作系統&#xff09;學習筆記 操作系統入門系列-MIT6.828&#xff08;操作系統&#xff09;學習筆記&#xff08;一&#xff09;---- 操作系統介紹與接口示例 操作系統入門系列-MIT6.828&#xff08;操作系統工程&#xff09;學習筆記&#xff08;二&am…

Java面向對象-常用類(日期時間類)

常用類-日期時間類 Date&#xff08;java.util.Date&#xff09; – 日期類 SimpleDateFormat – 格式化日期類 Calendar – 日歷類 1 Date類 java.util.Date類表示特定的瞬間&#xff0c;精確到毫秒。 package com.qf.datetime;import java.util.Date;public class Test01 {…

ubantu20.04 跑通ros2版的orbslam2

我的歷程 先編譯的非ros版的robslam2&#xff08;非常詳細&#xff09; ubuntu20.04配置并編譯ORB-SLAM2_ubuntu20.04安裝orb-lslam2-CSDN博客 然后裝ros2&#xff08;非常詳細&#xff09; 詳細介紹如何在ubuntu20.04中安裝ROS系統&#xff0c;超快完成安裝&#xff08;最…

C#解析xml文件

1、示例 <?xml version"1.0" encoding"utf-8" standalone"no"?><DATA><ITEMS><ITEM><ID>01<ID/><CODE>0001<CODE><NAME>測試1<NAME/></ITEM><ITEM><ID>02<…

福昕PDF編輯器自定義快捷方式

你是否為用不慣福昕PDF編輯器自帶的快捷鍵而發愁&#xff1f;今天&#xff0c;我和大家分享一下如何設置自己想要的快捷鍵方式&#xff0c;希望能對大家有幫助。 步驟一&#xff1a;打開福昕PDF編輯&#xff0c;并找到更多命令 步驟二&#xff1a;切換到鍵盤一欄&#xff0c;并…

分布式專題

一&#xff1a;分布式事務 1、理論基礎 分布式事務主要區分本地事務 什么是本地事務&#xff08;Local Transaction&#xff09;&#xff1f;本地事務也稱為數據庫事務或傳統事務&#xff08;相對于分布式事務而言&#xff09;。尤其對于數據庫而言&#xff0c;為了數據安全…