'?'[0] === '?' // true
'??'[0] === '??' // false
'??'[0] === '?' // true
我懷疑它與 unicode 相關,但想準確了解正在發生的事情以及如何正確比較這些字符。為什么“??”與“?”的處理方式不同?
我在這個簡單的字符計數中遇到了它
'??????'.split('').filter(e => e === '?').length // 2
'??????'.split('').filter(e => e === '??').length // 0
uj5u.com熱心網友回復:
因為??需要兩個字符:
"??".length === 2
"??"[0] === "?"an"??"[1]表示顏色,我想。
并"?".length === 1因此只需要一個字符。
它類似于具有不同膚色的表情符號的作業方式。
至于如何比較,我認為"??".codePointAt(0)(不要與 混淆charCodeAt())可能會有所幫助。請參閱https://thekevinscott.com/emojis-in-javascript/:
codePointAt 和 fromCodePoint 是 ES2015 中引入的新方法,可以處理 UTF-16 編碼大于 16 位的 unicode 字符,其中包括表情符號。使用這些而不是 charCodeAt,它不能正確處理表情符號。
uj5u.com熱心網友回復:
我相信“??”由兩個部分組成。當您輸出 '??'[0] 時,您會得到 '?',并且黑色復選標記不等于綠色復選標記。
但是,'?' 僅由單個組件組成,因此當您輸出 '?'[0] 時,您會得到相同的結果:'?'。
uj5u.com熱心網友回復:
第二個字符'??'[1](代碼點 = 65039)是一個Variation Selector
變體選擇器指定前一個字符應與表情符號一起顯示。僅當前面的字符默認為文本表示時才需要。
常用于 Emoji ZWJ Sequences,其中序列中的一個或多個字符具有文本和表情符號呈現,但其他默認為文本(黑白)顯示。
例如雪人作為文本:?。雪人作為表情符號:??
黑心作為文字:?。黑心作為表情符號:??(不是那么黑)
Variation Selector-16 于 2002 年被批準為 Unicode 3.2 的一部分。
https://unicode-table.com/en/FE0F/
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/310808.html
標籤:javascript 细绳 统一码
上一篇:如何從不同站點獲取Json資料
