JavaScript 中的 Unicode

學習如何在 JavaScript 中處理 Unicode,瞭解 Emoji 的組成,ES6 的改進以及在處理 Unicode 時可能遇到的一些問題。 源文件的 Unicode 編碼 JavaScript 在內部如何使用 Unicode 在字符串中使用 Unicode 歸一化 Emoji 獲取字符串的正確長度 ES6 Unicode 編碼點转義 編碼 ASCII 字節 Unicode 編碼的源文件 如果沒有指定其他方式,瀏覽器會假設任何程序的源代碼都是以本地字符集編寫的,而字符集因國家而異,可能會導致意外問題。因此,設置任何 JavaScript 文檔的字符集是很重要的。 如何指定其他字符集,尤其是 UTF-8,這是網絡上最常見的文件編碼方式? 如果文件包含BOM字符,那將優先確定字符集。在網上可以找到許多不同的意見,有人說不建議在 UTF-8 中使用 BOM,有些編輯器甚至不會添加 BOM。 這是Unicode標準所說的: … 使用 BOM 對於 UTF-8 既不是必需的,也不是建議的,但在轉換使用了 BOM 的其他編碼形式的 UTF-8 數據的上下文中可能會遇到 BOM,或者在 BOM 作為 UTF-8 簽名使用的情況下可能會遇到 BOM。 這是 W3C 所說的: 在 HTML5 中,瀏覽器需要識別 UTF-8 BOM 並使用它檢測頁面的編碼,主要瀏覽器的最新版本在使用 UTF-8 編碼的頁面時也可以正常處理 BOM。- https://www.w3.org/International/questions/qa-byte-order-mark 如果使用 HTTP(或 HTTPS)獲取文件,Content-Type header 可以指定字符集:...

javascript-comparison-operators

#JavaScript比較運算子 學習JavaScript比較運算子的基礎知識 你可以使用以下運算子來比較兩個數字或兩個字串。 這些運算的結果將返回一個布林值。 < 小於 <= 小於或等於 > 大於 >= 大於或等於 const a = 2 a >= 1 //true 當比較字串時,這些運算子會檢查字母的順序,該順序編碼在Unicode中。字母的數值越大,對於運算子來說,該字母越大。 你可以在Wikipedia的Unicode字符代碼列表中找到字符的Unicode編碼。

String的normalize()方法

了解JavaScript字符串的normalize()方法。 Unicode有四种主要的标准化形式:NFC、NFD、NFKC、NFKD。维基百科对此有很好的解释。 normalize()方法根据您指定的形式对字符串进行标准化,并将其作为参数传递给该方法(如果未设置参数,则默认为NFC)。 我将重用MDN的示例,因为我确信这是一个有效的用法,但我找不到其他示例: '\u1E9B\u0323'.normalize() //ẛ̣ '\u1E9B\u0323'.normalize('NFD') //ẛ̣ '\u1E9B\u0323'.normalize('NFKD') //ṩ '\u1E9B\u0323'.normalize('NFKC') //ṩ

如何使用JavaScript正則表達式

通過這篇簡短的指南,您可以學習關於JavaScript正則表達式的所有內容,了解最重要的概念並通過示例展示。 正則表達式介紹 困難但有用 正則表達式是什麼樣子 工作原理 錨定 匹配範圍內的項目 多次匹配範圍項目 否定模式 元字符 正則表達式選項 量詞 + * {n} {n,m} 可選項目 分組 捕獲分組 可選分組 引用匹配的分組 命名捕獲分組 不使用分組的匹配和執行 非捕獲分組 標誌 檢查正則表達式 轉義 字符串邊界 使用正則表達式替換 貪婪模式 先行斷言:根據後面的字符串進行匹配 後行斷言:根據前面的字符串進行匹配 正則表達式和Unicode Unicode屬性逃逸 示例 從字符串中提取數字 匹配電子郵件地址 捕獲雙引號之間的文本 獲取HTML標籤內的內容 正則表達式介紹 正則表達式(也稱為regex)是一種以非常高效的方式處理字符串的方法。 通過使用特殊的語法來定義正則表達式,您可以: 在字符串中搜索文本 在字符串中替換子字符串 從字符串中提取信息 幾乎每一種編程語言都實現了正則表達式。每種實現之間有一些小差異,但是基本概念幾乎都是通用的。 正則表達式可以追溯到20世紀50年代,那時它被正式作為字符串處理算法的一種概念搜索模式。 它在grep、sed等UNIX工具中得到了實現,以及在流行的文本編輯器中使用,在Perl編程語言中引入了正則表達式,隨後在許多其他編程語言中引入。 JavaScript與Perl一起是具有內置的正則表達式支持的編程語言之一。 困難但有用 對於初學者來說,正則表達式可能完全看不懂,但很多時候即使對專業開發人員來說也是如此,除非他們願意投入必要的時間去理解它們。 由於寫出易於理解、易於閱讀和易於維護/修改的正則表達式非常困難,所以使用正則表達式是唯一明智的方法來執行某些字符串操作,因此它是一個非常有價值的工具。 本教程旨在以簡單的方式介紹JavaScript正則表達式,並提供閱讀和創建正則表達式所需的所有信息。 經驗法則是,簡單的正則表達式容易閱讀且易於撰寫,而複雜的正則表達式如果你不深入了解基礎知識,很快就會變得混亂不堪。 正則表達式是什麼樣子 在JavaScript中,正則表達式是一個對象,可以用兩種方式定義。 第一種方式是使用構造函數通過實例化一個新的RegExp對象來定義: const re1 = new RegExp('hey') 第二種方式是使用正則字面量形式: const re1 = /hey/ 您知道JavaScript有對象字面量和數組字面量嗎?它還有正則字面量。 在上面的示例中,hey被稱為模式。在字面形式中,它由斜杠分隔,而使用對象構造函數時則不是。 這是兩種形式之間的第一個重要差異,但我們稍後會看到其他差異。...

字串的 codePointAt() 方法

探索 JavaScript 字串的 codePointAt() 方法。 這個方法在 ES2015 中被引入,用於處理無法用一個 16 位元 Unicode 單元表示的 Unicode 字元,而需要使用兩個。 使用 charCodeAt() 你需要取得第一個和第二個單元,然後結合它們。使用 codePointAt() 可以在一次呼叫中取得整個字元。 舉個例子,這個中文字「𠮷」由兩個 UTF-16(Unicode)部分組成: "𠮷".charCodeAt(0).toString(16) //d842 "𠮷".charCodeAt(1).toString(16) //dfb7 如果你結合這兩個 Unicode 字元來建立一個新的字元: "\ud842\udfb7" //"𠮷" 你可以使用 codePointAt() 得到相同的結果: "𠮷".codePointAt(0) //20bb7 如果你結合這兩個 Unicode 字元來建立一個新的字元: "\u{20bb7}" //"𠮷" 想要了解更多關於 Unicode 及如何處理 Unicode 的相關資訊,可以參考Unicode and UTF-8。

字符串的 charCodeAt() 方法

了解 JavaScript 字符串的 charCodeAt() 方法 在指定索引 i 处返回字符的字符编码。和 charAt() 类似,不同之处在于它返回表示字符的 Unicode 16 位整数: 'Flavio'.charCodeAt(0) // 70 'Flavio'.charCodeAt(1) // 108 'Flavio'.charCodeAt(2) // 97 在调用 toString() 之后,将返回十六进制数字,您可以在 Unicode 表格(例如 此链接)中查找。