字元串的解讀和標簽模板

来源:https://www.cnblogs.com/wang-fan-w/archive/2023/02/14/17119878.html
-Advertisement-
Play Games

字元串解讀 es6加強了對Unicode 的支持,允許\uxxxx的形式展現一個字元,例如: console.log('\u0061'); // 列印 a \u後面的為字元的 Unicode 碼點 \u 後面4位 xxxx 但是這種寫法只識別 \u0000 到 \UFFFF 之間的字元,超出需要使用 ...


字元串解讀

es6加強了對Unicode 的支持,允許\uxxxx的形式展現一個字元,例如:

console.log('\u0061'); // 列印 a

\u後面的為字元的 Unicode 碼點 \u 後面4位 xxxx

但是這種寫法只識別 \u0000\UFFFF 之間的字元,超出需要使用兩個雙位元組表示,例如:

console.log('\uD842\uDFB7'); // 列印 吉

如果說超出了\uxxxx位元組的範圍,則為兩個位元組的拼接,例如:

console.log('\u20BB7'); // 輸出 ' 7'   \u20BB系統識別為空
console.log('\u00617'); // 輸出 'a7'   

\u0061識別為a,由於7超出了這個位元組,所以為\u0061+7,結果為a7

es6Unicode 的支持進行了加強,如果超出了兩個位元組,放入大括弧內即可正常解讀

console.log("\u{20BB7}"); // 列印 吉

// 只要將碼點放入大括弧即可正確解讀
console.log('\u{41}\u{42}\u{43}'); // 輸出ABC

大括弧與雙位元組的寫法是等價的

  console.log('\u{1F680}' == '\uD83D\uDE80'); // 大括弧與4位元組的寫法等價 輸出true

js對字元的幾種表現方法:

console.log('\z' === 'z');
console.log('\172' === 'z');
console.log('\x7A' === 'z');
console.log('\u007A' === 'z');
console.log('\u{7A}' === 'z');
console.log('z' === 'z');

字元串的遍歷

字元串遍歷for...of

  for (let codePoint of 'foo') {
     console.log(codePoint); // f o o
   }

其實一般的遍歷,例如for,也可以遍歷字元串,但是for無法識別大於0xFFFF的碼點,而for...of則可以識別

 let text = String.fromCodePoint(0x20BB7)
 
 // for迴圈
    for (let i = 0; i < text.length; i++) {
         console.log(text[i]); // ' ' 空
      }
      
// for---of可以識別 大於0xFFFF的碼點 , 而傳統的for無法識別
    for (let i of text) {
        console.log(i); // 吉
     }

有些時候,我們在用JSON.stringify轉字元串的時候,發現轉譯的字元串多了幾個\
根據標準,JSON數據必須是 UTF-8 編碼。但是JSON.stringify()方法有可能返回不符合 UTF-8 標準的字元串。
UTF-8 標準規定,0xD8000xDFFF之間的碼點,不能單獨使用,必須配對使用。比如,\uD834\uDF06是兩個碼點,但是必須放在一起配對使用,代表字元

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 想必大家在版本更新迭代中,不免需要對資料庫表的欄位進行修改欄位類型或者長度的情況, 如果是修改存儲過程或者自定義函數, 那還是很好改的, 不用擔心表功能收到影響. 如果是改欄位呢? 首先要判斷欄位是不是已經在系統裡面, 沒有的話, 需要新增上去, 有的話, 需不需要修改? 其次, 腳本如果報錯, 是 ...
  • ChunJun是一個開始於2018年的批流一體數據集成框架項目,原名FlinkX。2022年2月22日,在FlinkX進行初版開源的整整四年後,技術團隊決定對FlinkX進行整體升級,並更名為ChunJun,希望為大家真正提供一個穩定、高效、易用的批流一體的數據集成框架。 2022年的ChunJun ...
  • 摘要:通常跑批加工場景下,都是大數量做關聯操作,通常不建議使用索引。有些時候因為計劃誤判導致使用索引的可能會導致嚴重的性能問題。本文從一個典型的索引導致性能的場景重發,剖析此類問題的特征,定位方法和解決方法 本文分享自華為雲社區《GaussDB(DWS)性能調優:indexscan導致的性能問題識別 ...
  • JUC提供的鎖機制,可以保證在同一個JVM進程中同一時刻只有一個線程執行操作邏輯; 多服務多節點的情況下,就意味著有多個JVM進程,要做到這樣,就需要有一個中間人; 分散式鎖就是用來保證在同一時刻,僅有一個JVM進程中的一個線程在執行操作邏輯; 換句話說,JUC的鎖和分散式鎖都是一種保護系統資... ...
  • 你想要的 ClickHouse 優化,都在這裡。 ClickHouse 是 OLAP(Online analytical processing)資料庫,以速度見長[1]。ClickHouse 為什麼能這麼快?有兩點原因[2]: 架構優越 列式存儲 索引 數據壓縮 向量化執行 資源利用 關註底層細節... ...
  • mysql日誌種類 錯誤日誌 二進位日誌 查詢日誌 慢查詢日誌 日誌 錯誤日誌 錯誤日誌是mysql中最重要的日誌之一,它記錄了當mysqld啟動和停止時,以及伺服器在運行過程中發生任何嚴重錯誤時的相關信息,當資料庫出現任何故障導致無法正常使用時,建議首先查看此日誌。 該日誌是預設開啟的,預設存放目 ...
  • 本文翻譯自: Composition in Flutter & Dart 在 Flutter & Dart 中使用組合創建模塊化應用程式。 什麼是組合? 在dictionary.com 中 composition 的定義為:將部分或者元素組合成一個整體的行為。簡單說,組合就像堆樂高積木,我們可以將積 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 前言 不知各位朋友現在在web端進行登錄的時候有沒有註意一個變化,以前登錄的時候是直接賬號密碼通過就可以直接登錄,再後來圖形驗證碼,數字結果運算驗證,到現在的拼圖驗證。這一系列的轉變都是為了防止機器操作,但對於我們來說,有億點麻煩,但也沒 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...