假設我們有一些(星光)Unicode字符的字符串:如何從一個字符串獲得第n(Unicode)的字符在JavaScript
const s = 'Hi Unicode!'
的[]
運營商和.charAt()
方法不用於獲取工作第四字符,這應該是「」:
> s[3]
'�'
> s.charAt(3)
'�'
的.codePointAt()
確實獲得第四屆字符正確的值,但不幸的是它是一個數,必須轉換BA CK爲字符串使用String.fromCodePoint()
:
> String.fromCodePoint(s.codePointAt(3))
''
類似地,字符串轉換成使用層片陣列產生有效的Unicode字符,所以這是獲得第四一個的另一種方式:
> [...s][3]
''
但我可以」不敢相信,從字符串要多少回串,或者是由於到字符串分割成一個數組都在做這種看似瑣碎的事情的唯一途徑。沒有一個簡單的方法來做到這一點?
> s.simpleMethod(3)
''
注:我知道,「性格」的定義有些模糊,但對這個問題的目的,字符僅僅是對應於一個Unicode碼點(無組合字符符號,沒有字形集羣,等等)。
更新說明:String.fromCodePoint(str.codePointAt(n))
方法是不是真的可行,因爲n
個位置有沒有采取以前的星體符號考慮:String.fromCodePoint(''.codePointAt(1)) // => '�'
(我覺得有點啞問這個,就像我可能缺少一些明顯的東西,但previous answers對這個問題不適用於星體平面上帶有Unicode符號的字符串。)
你見過這個頁面的https://developer.mozilla。org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt與一些代碼示例? – ivo
@ivo不,我沒有看到,有趣!代碼示例有一個「固定」版本的charAt,這很有用,但我想知道是否有一種好的方法已經支持語言 – epidemian
它是Javascript。簡單的事情不能這麼簡單:) – jorgonor