String: length
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2015å¹´7æâ©.
length ãã¼ã¿ããããã£ã¯ãString ãªãã¸ã§ã¯ãã®æååé·ã UTF-16 ã³ã¼ãåä½ã®æ°ã§è¡¨ãã¾ãã
試ãã¦ã¿ã¾ããã
const str = "Life, the universe and everything. Answer:";
console.log(`${str} ${str.length}`);
// äºæ³ãããçµæ: "Life, the universe and everything. Answer: 42"
å¤
éè² ã®æ´æ°ã§ãã
String: length ã®ããããã£å±æ§ | |
|---|---|
| æ¸è¾¼å¯è½ | ä¸å¯ |
| åæå¯è½ | ä¸å¯ |
| è¨å®å¯è½ | ä¸å¯ |
解説
ãã®ããããã£ã¯ãæååå
ã®ã³ã¼ãåä½ã®æ°ãè¿ãã¾ããJavaScript ã§ã¯ UTF-16 ã¨ã³ã³ã¼ãã£ã³ã°ã使ç¨ãã¦ããããã¹ã¦ã® Unicode æåã 1 ã¤ã¾ã㯠2 ã¤ã®ã³ã¼ãåä½ã«ã¨ã³ã³ã¼ãããããããlength ã§è¿ãããå¤ã¯æååã®å®éã® Unicode æåæ°ã«ä¸è´ããªãå¯è½æ§ãããã¾ãããã使ãããã©ãã³ãããªã«ãæåãªæ¼¢åãªã©ã¯ãã®ãããªåé¡ã«ã¯ãªãã¾ããããçµµæåãæ°å¦è¨å·ãé£ããæ¼¢åãªã©ã®ãããªç¹å®ã®æåä½ç³»ã§ã¯ãlength ã§è¿ãããå¤ãæååã®å®éã®æåæ°ã¨ä¸è´ããªããªãå¯è½æ§ãããã®ã§ãã³ã¼ãå使°ã¨æåæ°ã®éããèæ
®ããå¿
è¦ãããããããã¾ããã
è¨èªã®ä»æ§æ¸ã§ã¯ãæååã®æå¤§é·ã 253 - 1 è¦ç´ ã¨å¶å®ããã¦ãããããã¯æ£ç¢ºã«è¡¨ããæ´æ°ã®ä¸éã¨ãªã£ã¦ãã¾ãããããããã®é·ãã®æåå㯠16,384TiB ã®ã¹ãã¬ã¼ã¸ãå¿ è¦ã¨ããããã¯ä¸è¬çãªæ©å¨ã®ã¡ã¢ãªã¼ã«åã¾ããªããããå®è£ ä¸ã¯ãã£ã¨ä½ãé¾å¤ãè¨ãã¦ããå¾åããããæååã®é·ãã便å®ä¸ 32 ãããæ´æ°ã«åãã¦ãã¾ãã
- V8 ï¼Chrome 㨠node ã§ä½¿ç¨ï¼ã§ã¯ãæå¤§é·ã¯ 229 - 24 (~1GiB) ã§ãã32 ãããã®å ´åãæå¤§é·ã¯ 228 - 16 (~512MiB) ã§ãã
- Firefox ã§ã¯ãæå¤§é·ã¯ 230 - 2 (~2GiB) ã§ããFirefox 65 以åã§ã¯ãæå¤§é·ã¯ 228 - 1 (~512MiB) ã§ããã
- Safari ã§ã¯ãæå¤§é·ã¯ 231 - 1 (~4GiB) ã§ãã
ä»ã®ã¨ã³ã³ã¼ãã£ã³ã° (UTF-8 ã®ãã¡ã¤ã«ã blob) ã®å·¨å¤§ãªæååãæ±ã£ã¦ããå ´åã¯ããã¼ã¿ã JavaScript ã®æååã«ãã¼ãããã¨ãã¨ã³ã³ã¼ãã£ã³ã°ã¯å¸¸ã« UTF-16 ã«ãªããã¨ã«æ³¨æãã¦ãã ãããæååã®ãµã¤ãºã¯ãã¨ã®ãã¡ã¤ã«ã®ãµã¤ãºã¨ç°ãªãå¯è½æ§ãããã¾ãã
const str1 = "a".repeat(2 ** 29 - 24); // æåãã
const str2 = "a".repeat(2 ** 29 - 23); // RangeError: Invalid string length
const buffer = new Uint8Array(2 ** 29 - 24).fill("a".codePointAt(0)); // ãã®ãããã¡ã¼ã®ãµã¤ãºã¯ 512MiB
const str = new TextDecoder().decode(buffer); // ãã®æååã®ãµã¤ãºã¯ 1GiB
空æååã®å ´åãlength 㯠0 ã«ãªãã¾ãã
éçããããã£ã® String.length ã¯æååã®é·ãã¨ã¯é¢ä¿ãªãã String 颿°ã®ã¢ãªãã£ï¼ç°¡åã«è¨ãã°ããããæã¤å½¢å¼çãªå¼æ°ã®æ°ï¼ã§ããã1 ã§ãã
length ã¯æåæ°ã§ã¯ãªãã³ã¼ãåä½ã§æ°ãããããæåæ°ãåå¾ãããå ´åã¯ãã¾ãæååãã¤ãã¬ã¼ã¿ã¼ã§åå²ããæåãã¨ã«å復å¦çããã¦ãã ããã
function getCharacterLength(str) {
// ããã§ä½¿ç¨ããæååã¤ãã¬ã¼ã¿ã¼ã¯ãåãªãã³ã¼ãåä½ã§ã¯ãªãã
// æåãå復å¦çãã¾ãã
return [...str].length;
}
console.log(getCharacterLength("A\uD87E\uDC04Z")); // 3
æ¸è¨ç´ åä½ã§ã«ã¦ã³ããããå ´åã¯ã Intl.Segmenter ã使ç¨ãã¦ãã ãããã¾ããåå²ãããæååã segment() ã¡ã½ããã«æ¸¡ããè¿ããã Segments ãªãã¸ã§ã¯ããå復å¦çããã¦é·ããåå¾ãã¦ãã ããã
function getGraphemeCount(str) {
const segmenter = new Intl.Segmenter("ja-JP", { granularity: "grapheme" });
// ããã§ä½¿ç¨ããã¦ãã Segments ãªãã¸ã§ã¯ãã®ã¤ãã¬ã¼ã¿ã¼ã¯ãæåãæ¸è¨ç´ ã§å復å¦çãã¾ãã
// æåã¯è¤æ°ã® Unicode æåã§æ§æããã¦ããå ´åãããã¾ãã
return [...segmenter.segment(str)].length;
}
console.log(getGraphemeCount("ð¨âð©âð§âð§")); // 1
ä¾
>åºæ¬çãªä½¿ãæ¹
const x = "Mozilla";
const empty = "";
console.log(`${x} 㯠${x.length} ã³ã¼ãåä½ã®é·ãã§ã`);
/* "Mozilla 㯠7 ã³ã¼ãåä½ã®é·ãã§ã" */
console.log(`空æååã®é·ã㯠${empty.length} ã§ã`);
/* "空æåã®é·ã㯠0 ã§ã" */
æååã® length ã¯æåæ°ã¨çããã¨ã¯éããªã
const emoji = "ð";
console.log(emoji.length); // 2
console.log([...emoji].length); // 1
const adlam = "ð¤²ð¥ð¤£ð¤«";
console.log(adlam.length); // 8
console.log([...adlam].length); // 4
const formula = "âð¥ââ,ð¥Â²â¥0";
console.log(formula.length); // 11
console.log([...formula].length); // 9
length ã¸ã®ä»£å ¥
æååã¯ããªããã£ãã§ãããããæååã® length ããããã£ã«å¤ã代å
¥ãã¦ãç®ã«è¦ãã广ã¯ãªãã峿 ¼ã¢ã¼ãã§ã¯ä¾å¤ãçºçãã¾ãã
const myString = "bluebells";
myString.length = 4;
console.log(myString); // "bluebells"
console.log(myString.length); // 9
仿§æ¸
| Specification |
|---|
| ECMAScript® 2026 Language Specification > # sec-properties-of-string-instances-length > |