String.prototype.codePointAt()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015å¹´9æ.
codePointAt() 㯠String å¤ã®ã¡ã½ããã§ãæå®ãããã¤ã³ããã¯ã¹ããå§ã¾ãæåã® Unicode ã³ã¼ããã¤ã³ãå¤ã§ããéè² ã®æ´æ°ãè¿ãã¾ããã¤ã³ããã¯ã¹ã¯ Unicode ã³ã¼ããã¤ã³ãã§ã¯ãªããUTF-16 ã³ã¼ãåä½ã«åºã¥ããã¨ã«æ³¨æãã¦ãã ããã
試ãã¦ã¿ã¾ããã
const icons = "ââ
â²";
console.log(icons.codePointAt(1));
// äºæ³ãããçµæ: "9733"
æ§æ
codePointAt(index)
弿°
index-
è¿ãæåã® 0 åºç¹ã®ã¤ã³ããã¯ã¹ã§ããæ´æ°ã«å¤æããã
undefined㯠0 ã«å¤æããã¾ãã
è¿å¤
æå®ãããä½ç½® index ã«ããæåã®ã³ã¼ããã¤ã³ãå¤ã表ãéè² ã®æ´æ°å¤ã§ãã
indexã0âstr.length - 1ã®ç¯å²å¤ã§ããã°ãcodePointAt()ã¯undefinedãè¿ãã¾ããindexã®ä½ç½®ã®è¦ç´ ã UTF-16 ä¸ä½ãµãã²ã¼ãã§ãã£ãå ´åããã®ã³ã¼ããã¤ã³ãã®ãµãã²ã¼ããã¢ãè¿ãã¾ããindexã®ä½ç½®ã®è¦ç´ ã UTF-16 ä¸ä½ãµãã²ã¼ãã§ãã£ãå ´åãä¸ä½ãµãã²ã¼ãã³ã¼ãåä½ã®ã¿ãè¿ãã¾ãã
解説
æååã®ä¸ã®æåã¯ãå·¦ããå³ã«åãã¦ã¤ã³ããã¯ã¹ä»ãããã¦ãã¾ããæåã®æåã®æ·»å㯠0 ã§ãããæå¾ã®æåã®æ·»å㯠str ã¨ããååã®æååã§ããã° str.length - 1 ã§ãã
Unicode ã®ã³ã¼ããã¤ã³ã㯠0 ãã 1114111 (0x10FFFF) ã¾ã§ã®ç¯å²ã§ããUTF-16 ã§ã¯ãããããã®æååã®ã¤ã³ããã¯ã¹ã¯ 0 ï½ 65536 ã®ã³ã¼ãåä½ã§ããä¸ä½ã®ã³ã¼ããã¤ã³ã㯠16 ãããã®ãµãã²ã¼ãæ¬ä¼¼æåã®ãã¢ã«ãã£ã¦è¡¨ããã¾ãããããã£ã¦ãcodePointAt() ã¯æååã® 2 ã¤ã®ã¤ã³ããã¯ã¹ã«ã¾ãããã³ã¼ããã¤ã³ããè¿ãå¯è½æ§ãããã¾ããUnicode ã«é¢ããæ
å ±ã¯UTF-16 æåãUnicode ã³ã¼ããã¤ã³ããæ¸è¨ç´ ã¯ã©ã¹ã¿ã¼ãåç
§ãã¦ãã ããã
ä¾
>codePointAt() ã®ä½¿ç¨
"ABC".codePointAt(0); // 65
"ABC".codePointAt(0).toString(16); // 41
"ð".codePointAt(0); // 128525
"\ud83d\ude0d".codePointAt(0); // 128525
"\ud83d\ude0d".codePointAt(0).toString(16); // 1f60d
"ð".codePointAt(1); // 56845
"\ud83d\ude0d".codePointAt(1); // 56845
"\ud83d\ude0d".codePointAt(1).toString(16); // de0d
"ABC".codePointAt(42); // undefined
codePointAt() ã®ç¹°ãè¿ã
æååã¤ã³ããã¯ã¹ã使ç¨ãã¦ã«ã¼ãå¦çãè¡ãã¨ãåãã³ã¼ããã¤ã³ãã 2 ååç
§ããããã¨ã«ãªãã¾ãï¼1 åç®ã¯ä¸ä½ãµãã²ã¼ãã2 åç®ã¯ä¸ä½ãµãã²ã¼ãï¼ãã¾ãã2 åç®ã« codePointAt() ãè¿ãã®ã¯ä¸ä½ãµãã²ã¼ãã®ã¿ã§ãããã®ãããã¤ã³ããã¯ã¹ã«ããã«ã¼ãå¦çã¯é¿ããæ¹ãè¯ãã§ãããã
const str = "\ud83d\udc0e\ud83d\udc71\u2764";
for (let i = 0; i < str.length; i++) {
console.log(str.codePointAt(i).toString(16));
}
// '1f40e', 'dc0e', '1f471', 'dc71', '2764'
代ããã«ãfor...of æãã¹ãã¬ããæ§æã使ç¨ãã¦ãã ãããã©ã¡ããæååã® [Symbol.iterator]() ãå¼ã³åºããã³ã¼ããã¤ã³ãåä½ã§å復å¦çããã¾ãããããããcodePointAt(0) ã§ããããã®è¦ç´ ã®ã³ã¼ããã¤ã³ããåå¾ãã¦ãã ããã
for (const codePoint of str) {
console.log(codePoint.codePointAt(0).toString(16));
}
// '1f40e', '1f471', '2764'
[...str].map((cp) => cp.codePointAt(0).toString(16));
// ['1f40e', '1f471', '2764']
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-string.prototype.codepointat> |