JavaScriptã§ã¯ãããã¹ããã¼ã¿ã¯æååã¨ãã¦æ ¼ç´ããã¾ãã1æåç¨ã®å¥ã®åã¯ããã¾ããã
æååã®å é¨ã®ãã©ã¼ãããã¯å¸¸ã« UTF-16 ã§ããããã¼ã¸ã®ã¨ã³ã³ã¼ãã£ã³ã°ã¨ã¯é¢ä¿ããã¾ããã
å¼ç¨ç¬¦
å¼ç¨ç¬¦ã®ç¨®é¡ãæãåºãã¦ã¿ã¾ãããã
æååã¯ã·ã³ã°ã«ã¯ã©ã¼ããããã«ã¯ã©ã¼ããã¾ãã¯ããã¯ã¯ã©ã¼ãã®ããããã§å²ããã¨ãã§ãã¾ã:
let single = 'single-quoted';
let double = "double-quoted";
let backticks = `backticks`;
ã·ã³ã°ã«ã¨ããã«ã¯ã©ã¼ãã¯æ¬è³ªçã«åãã§ããããããªãããããã¯ã¯ã©ã¼ãã¯æååã®ä¸ã«é¢æ°å¼ã³åºããå«ãä»»æã®å¼ãåãè¾¼ããã¨ãã§ãã¾ãã
function sum(a, b) {
return a + b;
}
alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
ããã¯ã¯ã©ã¼ãã使ãå¥ã®å©ç¹ã¯ãæååãè¤æ°ã®è¡ã«è·¨ããã¨ãããã¨ã§ã:
let guestList = `Guests:
* John
* Pete
* Mary
`;
alert(guestList); // è¤æ°è¡ã§ã®ã²ã¹ãã®ãªã¹ã
èªç¶ã«è¦ãã¾ãããã§ãããã·ã³ã°ã«ã¯ã©ã¼ãã¨ããã«ã¯ã©ã¼ãã§ã¯ãã®æ¹æ³ã¯ä½¿ãã¾ããã
åãæ¹æ³ã§ã·ã³ã°ã«ãã¾ãã¯ããã«ã¯ã©ã¼ãã使ããã¨ããã¨ãã¨ã©ã¼ã«ãªãã¾ã:
let guestList = "Guests: // Error: Unexpected token ILLEGAL
* John";
ã·ã³ã°ã«ã¯ã©ã¼ãã¨ããã«ã¯ã©ã¼ãã¯ãè¤æ°è¡ã®æååã®å¿ è¦æ§ãèæ ®ããã¦ããªãã¨ãã®è¨èªä»æ§çå®ã«ãããã®ã§ãã ããã¯ã¯ã©ã¼ãã¯å¾ã§ç»å ´ãããã®ã§ãããæ±ç¨æ§ãããã¾ãã
ã¾ããããã¯ã¯ã©ã¼ãã¯æåã®ããã¯ã¯ã©ã¼ãã®åã« âãã³ãã¬ã¼ã颿°â ãæå®ãããã¨ãã§ãã¾ããæ§æã¯æ¬¡ã®ããã«ãªãã¾ã:func`string`ã 颿° func ã¯èªåçã«å¼ã°ããæååã¨åãè¾¼ã¾ããå¼ãåãåããããããå¦çãããã¨ãã§ãã¾ããdocs ã§ãããã«é¢ãã¦ããç¥ããã¨ãã§ãã¾ãããã㯠âã¿ã°ä»ããã³ãã¬ã¼ããªãã©ã«â ã¨å¼ã°ãã¾ãããã®æ©è½ã«ãããæååãã«ã¹ã¿ã ãã³ãã¬ã¼ãããã®ä»ã®æ©è½ã«ç°¡åã«ã©ããã§ãã¾ãããã»ã¨ãã©ä½¿ç¨ããã¾ããã
ç¹æ®æå
\n ã¨æ¸ãããããããã âæ¹è¡æåâ ã使ããã¨ã§ãã·ã³ã°ã«ã¯ã©ã¼ãã§è¤æ°è¡ã®æååãä½ããã¨ãå¯è½ã§ãã
let guestList = "Guests:\n * John\n * Pete\n * Mary";
alert(guestList); // è¤æ°è¡ã®ã²ã¹ãã®ãªã¹ã
ä¾ãã°ãããã2ã¤ã®è¡ã¯åãããã«è¡¨ç¾ããã¾ã:
let str1 = "Hello\nWorld"; // "æ¹è¡æå" ã使ç¨ããï¼è¡
// ããã¯ã¯ã©ã¼ãã使ç¨ããï¼è¡
let str2 = `Hello
World`;
alert(str1 == str2); // true
ãã¾ãä¸è¬çã§ãªãä»ã® âç¹æ®æåâ ãããã¾ãã
ããã¯ãã®ä¸è¦§ã§ã:
| æå | 説æ |
|---|---|
\n |
æ¹è¡ |
\r |
ãã£ãªãã¸ãªã¿ã¼ã³: åç¬ã§ã¯ä½¿ããã¾ãããWindows ã®ããã¹ããã¡ã¤ã«ã¯ \r\n ã§æ¹è¡ã表ç¾ãã¾ãã |
\', \" |
ã¯ã©ã¼ã |
\\ |
ããã¯ã¹ã©ãã·ã¥ |
\t |
ã¿ã |
\b, \f, \v |
ããã¯ã¹ãã¼ã¹, Form Feed, Vertical Tab â äºææ§ã®ããã«ãããæè¿ã§ã¯ä½¿ããã¾ãã |
\xXX |
16鲿°ã®ã¦ãã³ã¼ã XX ã§ããããããã¦ãã³ã¼ãæåã§ããä¾: '\x7A' 㯠'z' ã¨åãã§ã |
\uXXXX |
\u00A9 ã®ãããª16é²ã³ã¼ã XXXX ãæã¤ã¦ãã³ã¼ãè¨å· â ããã¯ãè使¨©è¨å· © ã®ã¦ãã³ã¼ãã§ãã æ£ç¢ºã«4æ¡ã®16鲿°ã§ãªããã°ãªãã¾ããã |
\u{Xâ¦XXXXXX} (1 ãã 6 åã® 16鲿°æå) |
æå®ãããUTF-32 ã¨ã³ã³ã¼ãã£ã³ã°ã®ã¦ãã³ã¼ãè¨å·ãä¸é¨ã®ã¾ããªæåã¯4ãã¤ãã使ç¨ãã2ã¤ã®ã¦ãã³ã¼ãè¨å·ã§ã¨ã³ã³ã¼ãããã¾ãããã®ããã«ãã¦é·ãã³ã¼ããæ¿å ¥ãããã¨ãã§ãã¾ãã |
ã¦ãã³ã¼ãã®ä¾ã§ã:
alert( "\u00A9" ); // ©
alert( "\u{20331}" ); // 佫, ä¸å½ã®è±¡å½¢æå (long unicode)
alert( "\u{1F60D}" ); // ð, ã¹ãã¤ã«è¨å· (another long unicode)
ãã¹ã¦ã®ç¹æ®æåã¯ããã¯ã¹ã©ãã·ã¥ \ ã§å§ã¾ãã¾ãããã㯠âã¨ã¹ã±ã¼ãæåâ ã¨ãå¼ã°ãã¾ãã
ã¾ããæååã®ä¸ã«å¼ç¨ç¬¦ãæ¿å ¥ãããã¨ãã«ã使ãã¾ãã
ä¾:
alert( 'I\'m the Walrus!' ); // I'm the Walrus!
ä¸ã§è¦ãããã«ãå
å´ã®å¼ç¨ç¬¦ã®åã«ããã¯ã¹ã©ãã·ã¥ \' ã追å ããªãã¨ããã¾ãããããããªãã¨ãæååã®çµããã ã¨èªèãããããã§ãã
ãã¡ãããããã¯å²ã£ã¦ãããã®ã¨åãå¼ç¨ç¬¦ã使ãå ´åã«ã¤ãã¦ã§ãããªã®ã§ããããã解決çã¯ãããã«ã¯ã©ã¼ããããã¯ã¯ã©ã¼ãã代ããã«ä½¿ããã¨ã§ã:
alert( `I'm the Walrus!` ); // I'm the Walrus!
ããã¯ã¹ã©ãã·ã¥ \ 㯠JavaScript ã«ããæååã®æ£ããèªã¿è¾¼ã¿ã«å½¹ç«ã¡ããã®å¾æ¶ãã¾ããã¡ã¢ãªå
é¨ã§ã¯æåå㯠\ ãæã£ã¦ãã¾ãããããã¯ãä¸ã®ä¾ã®ããã« alert ã§ã¯ã£ããã¨è¦ããã¨ãã§ãã¾ãã
ããããæååå
ã®ããã¯ã¹ã©ãã·ã¥ \ ãå®éã«è¡¨ç¤ºããå¿
è¦ãããå ´åã¯ã©ãã§ãããï¼
ãããå¯è½ã§ãããã®å ´å㯠\\ ã®ããã«2ã¤æ¸ãå¿
è¦ãããã¾ã:
alert( `The backslash: \\` ); // The backslash: \
æååé·
length ããããã£ã¯æååã®é·ããæã¡ã¾ã:
alert( `My\n`.length ); // 3
\n ã¯1ã¤ã® âç¹æ®â æåã§ãããã¨ã«æ³¨æãã¦ãã ããããªã®ã§ãé·ãã¯å®éã« 3 ã§ãã
length ã¯ããããã£ã§ãããã¤ãã®ä»ã®è¨èªã«ã¤ãã¦ç¥ã£ã¦ãã人ã¯ãåãªã str.length ã®ä»£ããã« str.length() ã¨å¼ã³ééãããã¨ãããã¾ãããããã¯åä½ãã¾ããã
str.length ã¯æ°å¤ããããã£ã§ããã颿°ã§ã¯ãªããã¨ã«æ³¨æãã¦ãã ããããã®å¾ã«æ¬å¼§ãã¤ããå¿
è¦ã¯ããã¾ããã
æåã¸ã®ã¢ã¯ã»ã¹
pos ã®ä½ç½®ã®æåãåå¾ããå ´åãè§æ¬å¼§ [pos] ã使ãããããã㯠str.charAt(pos) ã¡ã½ãããå¼ã³åºãã¾ããæåã®æå㯠0 çªç®ããå§ã¾ãã¾ã:
let str = `Hello`;
// æåã®æå
alert( str[0] ); // H
alert( str.charAt(0) ); // H
// æå¾ã®æå
alert( str[str.length - 1] ); // o
ä¸»ã«æ´å²çãªçç±ã§ charAt ãåå¨ãã䏿¹ãè§æ¬å¼§ã¯æåãåå¾ããç¾ä»£ã®æ¹æ³ã§ãã
ãããã®å¯ä¸ã®éãã¯ãæåãè¦ã¤ãããªãã£ãå ´åã[] 㯠undefined ãè¿ããcharAt ã¯ç©ºæåãè¿ãç¹ã§ãã
let str = `Hello`;
alert( str[1000] ); // undefined
alert( str.charAt(1000) ); // '' (空æå)
ã¾ãã for..of ã使ã£ã¦æååãã¤ãã¬ã¼ããããã¨ãã§ãã¾ã:
for (let char of "Hello") {
alert(char); // H,e,l,l,o (æå㯠"H", 次㫠"e", ãã®å¾ã¯ "l" ... ã¨ãªãã¾ã)
}
æååã¯ä¸å¤ã§ã
JavaScriptã§ã¯æååã¯å¤æ´ã§ãã¾ãããæåãå¤ãããã¨ã¯ä¸å¯è½ã§ãã
夿´ã§ããªããã¨ã確èªãã¦ã¿ã¾ããã:
let str = 'Hi';
str[0] = 'h'; // ã¨ã©ã¼
alert( str[0] ); // åãã¾ãã
é常ã®åé¿çã¯ãå
¨ä½ã®æ°ããæååãä½ããå¤ããã®ã®ä»£ããã«ããã str ã«ä»£å
¥ããæ¹æ³ã§ãã
ä¾:
let str = 'Hi';
str = 'h' + str[1]; // æååãç½®æ
alert( str ); // hi
次ã®ã»ã¯ã·ã§ã³ã§ã¯ãããã«ã¤ãã¦ããå¤ãã®ä¾ãè¦ã¦ããã¾ãã
ã±ã¼ã¹(大æåå°æå)ã夿´ãã
ã¡ã½ãã toLowerCase() 㨠toUpperCase() ã¯ã±ã¼ã¹ã夿´ãã¾ã:
alert( 'Interface'.toUpperCase() ); // INTERFACE
alert( 'Interface'.toLowerCase() ); // interface
1æåã ãå°æåã«ãããå ´åã¯æ¬¡ã®ããã«ã§ãã¾ã:
alert( 'Interface'[0].toLowerCase() ); // 'i'
é¨åæååã®æ¤ç´¢
æååã®ä¸ã§ãé¨åæååãæ¢ãæ¹æ³ã¯ããã¤ãããã¾ãã
str.indexOf
æåã®ã¡ã½ãã㯠str.indexOf(substr, pos) ã§ãã
ãã㯠str ã®ä¸ã§ substr ãæ¢ããä¸ãããã pos ã®ä½ç½®ããéå§ãã¦ãè¦ã¤ãã£ãä½ç½®ãã¾ãã¯è¦ã¤ãããªãã£ãå ´å㯠-1 ãè¿ãã¾ãã
ä¾:
let str = 'Widget with id';
alert( str.indexOf('Widget') ); // 0, 'Widget' ãå
é ã§è¦ã¤ãã£ãã®ã§
alert( str.indexOf('widget') ); // -1, è¦ã¤ããã¾ããã§ãããæ¤ç´¢ã¯æå大å°ãåºå¥ãã¾ã
alert( str.indexOf("id") ); // 1, "id" ã¯ä½ç½® 1 ã§è¦ã¤ããã¾ãã(..idget ã® id)
ä»»æã®2ã¤ç®ã®ãã©ã¡ã¼ã¿ã¯ãä¸ããããä½ç½®ããæ¤ç´¢ãå§ããå ´åã®ãã®ã§ãã
ä¾ãã°ã"id" ã®æåã®åºç¾ã¯ 1 ã®ä½ç½®ã§ããæ¬¡ã®åºç¾ãæ¢ãããã«ã2 ã®ä½ç½®ããæ¤ç´¢ãå§ãã¦ã¿ã¾ãããã:
let str = 'Widget with id';
alert( str.indexOf('id', 2) ) // 12
ãã¹ã¦ã®åºç¾ç®æãç¥ãããå ´åã¯ãã«ã¼ãã®ä¸ã§ indexOf ã使ãã¾ããååãããããå¾ã®ä½ç½®ããæ°ããå¼ã³åºããè¡ãã¾ã:
let str = 'As sly as a fox, as strong as an ox';
let target = 'as'; // æ¢ãã¾ããã
let pos = 0;
while (true) {
let foundPos = str.indexOf(target, pos);
if (foundPos == -1) break;
alert( `Found at ${foundPos}` );
pos = foundPos + 1; // 次ã®ä½ç½®ããæ¤ç´¢ãç¶ãã¾ã
}
åãã¢ã«ã´ãªãºã ãããçããããã¨ãã§ãã¾ã:
let str = "As sly as a fox, as strong as an ox";
let target = "as";
let pos = -1;
while ((pos = str.indexOf(target, pos + 1)) != -1) {
alert( pos );
}
str.lastIndexOf(pos)æååã®æå¾ããæåã«åãã£ã¦æ¢ãé¡ä¼¼ã®ã¡ã½ãã str.lastIndexOf(pos) ãããã¾ãã
ããã¯éã®é åºã§ããããã対象ãåæãã¾ãã
if ãã¹ãã®ä¸ã§ã¯ indexOf ã¯å°ãä¸ä¾¿ã§ãããã®ããã« if ã®ä¸ã«ç½®ããã¨ã¯ã§ãã¾ãã:
let str = "Widget with id";
if (str.indexOf("Widget")) {
alert("We found it"); // åä½ãã¾ãã
}
ä¸ã®ä¾ã® alert ã¯è¡¨ç¤ºãã¾ããããªããªããstr.indexOf("Widget") 㯠0 ãè¿ãããã§ã (ããã¯ãæåã®ä½ç½®ã§ããããããã®ãè¦ã¤ãã£ããã¨ãæå³ãã¾ã)ãæ£ããã§ãããif 㯠0 ã false ã¨å¤æãã¾ãã
ãªã®ã§ãå®éã«ã¯ãã®ããã«ã-1 ã®ãã§ãã¯ãããã¹ãã§ã:
let str = "Widget with id";
if (str.indexOf("Widget") != -1) {
alert("We found it"); // ããã§åãã¾ã!
}
The bitwise NOT trick
ããã§ä½¿ããã¦ããå¤ãããªãã¯ã®1ã¤ã¯ ~ æ¼ç®åã® bitwise NOT ã§ããããã¯ãæ°å¤ã 32bit æ´æ°ã«å¤æã(ããåå¨ããã°å°æ°é¨åãé¤ãã¦)ããã®2鲿°è¡¨ç¾ã®ãã¹ã¦ã®ããããå転ãã¾ãã
32ãããæ´æ°ã®å ´åã ãn ã¯ï¼IEEE-754å½¢å¼ã®ããï¼ -(n+1) ã¨å
¨ãåãæå³ã§ãã
ä¾:
alert( ~2 ); // -3, -(2+1) ã¨åãã§ã
alert( ~1 ); // -2, -(1+1) ã¨åãã§ã
alert( ~0 ); // -1, -(0+1) ã¨åãã§ã
alert( ~-1 ); // 0, -(-1+1) ã¨åãã§ã
ä¸ã®éãã~n ã¯ã n == -1 ã®ã¨ãã ãã¼ãã«ãªãã¾ãã
ãªã®ã§ãif ( ~str.indexOf("...") ) ã®ãã¹ã㯠indexOf ã®çµæã -1 ã§ãªãå ´å㯠true ã§ããã¤ã¾ããããããããã®ãããã¨ããã§ãã
indexOf ãã§ãã¯ã®ç縮形ã¨ãã¦ä½¿ããã¾ã:
let str = "Widget";
if (~str.indexOf("Widget")) {
alert( 'Found it!' ); // åä½ãã¾ã
}
é常ãè¨èªæ©è½ãæç½ã§ãªãæ¹æ³ã§ä½¿ç¨ãããã¨ã¯æ¨å¥¨ããã¾ãããããã®ããªãã¯ã¯æã®ã³ã¼ãã§ã¯åºã使ããã¦ãã¾ãããªã®ã§ãããã¯çè§£ãã¦ããã¾ãããã
è¦ãã¦ããã¾ããã: if (~str.indexOf(...)) 㯠âããè¦ã¤ãã£ããâ ã¨èªã¿ã¾ãã
ã§ãããæ£ç¢ºã«ã¯ã大ããªæ°å㯠~ æ¼ç®åã«ãã£ã¦ 32ãããã«åãæ¨ã¦ãããããã0 ã«ãªãä»ã®æ°å¤ãåå¨ãã¾ããæå°ã®ãã®ã¯ ~4294967295=0 ã§ããæååãããã»ã©é·ããªãå ´åã«ã®ã¿ããã ãããã§ãã¯ã§ãã¾ãã
ç¾å¨ããã®ãããªããªãã¯ã¯å¤ãã³ã¼ãã®ä¸ã§ã®ã¿ç¢ºèªã§ãã¾ããç¾å¨ã® JavaScript ã§ã¯ .includes ã¡ã½ããï¼å¾è¿°ï¼ãæä¾ããã¦ãã¾ãã
includes, startsWith, endsWith
ããç¾ä»£ã®ã¡ã½ãã str.includes(substr, pos) 㯠str ã substr å«ããã©ããã§ true/false ãè¿ãã¾ãã
ããããã¦ãããã®ç¢ºèªã¯å¿ è¦ã ãããã®ä½ç½®ã¾ã§ã¯ä¸è¦ã¨è¨ã£ãå ´åã«ãã®ã¡ã½ããã使ãã¾ãã
alert( "Widget with id".includes("Widget") ); // true
alert( "Hello".includes("Bye") ); // false
str.includes ã®ä»»æã®2ã¤ç®ã®å¼æ°ã¯ãæ¤ç´¢éå§ã®ä½ç½®ã§ã:
alert( "Midget".includes("id") ); // true
alert( "Midget".includes("id", 3) ); // false, ä½ç½® 3 ããè¦ãã¨ã"id" ã¯ããã¾ãã
ã¡ã½ãã str.startsWith 㨠str.endsWith ã¯ããããã®ååãæããã¨ãæ£ç¢ºã«è¡ãã¾ã:
alert( "Widget".startsWith("Wid") ); // true, "Widget" 㯠"Wid" ã§å§ã¾ãã¾ã
alert( "Widget".endsWith("get") ); // true, "Widget" 㯠"get" ã§çµããã¾ã
é¨åæååãåå¾ãã
JavaScriptã§ã¯ãé¨åæååãåå¾ãã3ã¤ã®æ¹æ³ãããã¾ã: substring, substr 㨠slice ã§ãã
str.slice(start [, end])-
startããendã¾ã§(ãã ããå«ã¾ãªã)ã®æååã®ä¸é¨ãè¿ãã¾ããä¾:
let str = "stringify"; alert( str.slice(0, 5) ); // 'strin', 0 ãã 5 ã¾ã§ã®é¨åæåå (5ã¯å«ã¾ãªã) alert( str.slice(0, 1) ); // 's', 0 ãã 1, ãã 1 ã¯å«ã¾ãªãã®ã§ 0 ä½ç½®ã®æåã ãã§ã2ã¤ç®ã®å¼æ°ããªãå ´åã
sliceã¯æååã®æå¾ã¾ã§è¡ãã¾ã:let str = "stringify"; alert( str.slice(2) ); // ringify, 2ã¤ç®ã®ä½ç½®ããæå¾ã¾ã§start/endã¯è² ã®å¤ãæå®å¯è½ã§ããããã¯ãä½ç½®ãæååã®æ«å°¾ããã«ã¦ã³ãããããã¨ãæå³ãã¾ã:let str = "stringify"; // å³ãã4çªç®ããå§ã¾ããå³ãã1ã¤ç®ã¾ã§ alert( str.slice(-4, -1) ); // gif str.substring(start [, end])-
startã¨endã® é ã®æååã®ä¸é¨ãè¿ãã¾ããããã¯ã»ã¼
sliceã¨åãã§ãããstartãendãã大ããã¦ãè¯ãã§ããä¾:
let str = "stringify"; // ãããã¯åãæååã§ã alert( str.substring(2, 6) ); // "ring" alert( str.substring(6, 2) ); // "ring" // ...ããslice ã¯éãã¾ã: alert( str.slice(2, 6) ); // "ring" (åã) alert( str.slice(6, 2) ); // "" (空æå)slice ã¨ã¯éãè² ã®å¤ã¯ãµãã¼ãããã¦ãã¾ããããããã¯
0ã¨ãã¦æ±ããã¾ãã str.substr(start [, length])-
startããä¸ããããlengthåã®ãæååã®ä¸é¨ãè¿ãã¾ããããã¾ã§ã®ã¡ã½ããã¨ã¯å¯¾ç §çã«ãçµããä½ç½®ã®ä»£ããã«
lengthãæå®ãããã¨ãã§ãã¾ãã:let str = "stringify"; alert( str.substr(2, 4) ); // ring, 2ã®ä½ç½®ãã 4æååå¾ãã¾ãæåã®å¼æ°ã¯ãæ«å°¾ããã«ã¦ã³ãããããã«è² ã®å¤ã«ãã§ãã¾ã:
let str = "stringify"; alert( str.substr(-4, 2) ); // gi, 4ã®ä½ç½®ãã 2æååå¾ãã¾ã
æ··ä¹±ããªãããããããã®ã¡ã½ããã«ã¤ãã¦ãããããã¾ããã:
| ã¡ã½ãã | é¸æå¯¾è±¡â¦ | è² ã®å¤ |
|---|---|---|
slice(start, end) |
start ãã end ã¾ã§ |
è² ã®å¤ã許å¯ãã¾ã |
substring(start, end) |
start 㨠end ã®é |
è² ã®å¤ã¯ 0 æ±ãã§ã |
substr(start, length) |
start ãã length æåãåå¾ |
è² ã® start ã許å¯ãã¾ã |
ããããã¹ã¦ä½¿ãã¾ããæ£ç¢ºã«ã¯ãsubstr ã¯å°ããªæ¬ ç¹ãããã¾ã: ãã㯠ã³ã¢ãªJavaScriptã®ä»æ§ã§ã¯ãªããä¸»ã«æ´å²çãªçç±ããåå¨ãããã©ã¦ã¶å°ç¨ã®æ©è½ãæ±ã Annex B ã§èª¬æããã¦ãã¾ãããªã®ã§ãéãã©ã¦ã¶ç°å¢ã§ã¯ãµãã¼ãããã¦ããªãå¯è½æ§ãããã¾ãããã ãå®éã«ã¯ã»ã¼ã©ãã§ãåä½ãã¦ãã¾ãã
èè
ã¯ã»ã¨ãã©ã®ã±ã¼ã¹ã§ slice ã使ã£ã¦ãã¾ãã
æå忝è¼
ãã£ãã¿ã¼ æ¯è¼ ã§å¦ãã ããã«ãæååã¯ã¢ã«ãã¡ãããé ã«æåãã¨ã«æ¯è¼ããã¾ãã
ããããããã¤ãã®å¥å¦ãªã¨ãããããã¾ãã
-
å°æåã¯å¸¸ã«å¤§æåããã大ãããªãã¾ã:
alert( 'a' > 'Z' ); // true -
çºé³åºå¥è¨å·ä»ãã®æå㯠âè¦åã«åãã¦ãã¾ãâ:
alert( 'Ãsterreich' > 'Zealand' ); // trueãããã®å½ãã½ã¼ãããå ´åãå¥å¦ãªçµæã«ãªãããããã¾ãããé常ã人ã ã¯ãªã¹ãã§
Ãsterreichã®å¾ã«Zealandãæ¥ããã¨ãæå¾ ããããã§ãã
ä½ãèµ·ãã¦ããã®ãçè§£ããããã«ãJavaScriptã§ã®æååã®å é¨è¡¨ç¾ãè¦ã¦ã¿ã¾ãããã
ãã¹ã¦ã®æåå㯠UTF-16 ã使ã£ã¦ã¨ã³ã³ã¼ãããã¦ãã¾ããåæåã¯å¯¾å¿ããæ°å¤ã³ã¼ããæã£ã¦ãã¾ããã³ã¼ãã®æåãåå¾ãããæ»ããã¨ã®ã§ããç¹æ®ãªã¡ã½ãããããã¾ãã
str.codePointAt(pos)-
ä½ç½®
posã®æåã³ã¼ããè¿ãã¾ã:// 大å°ç°ãªãæåã¯æåã³ã¼ããå¥ã§ã alert( "z".codePointAt(0) ); // 122 alert( "Z".codePointAt(0) ); // 90 String.fromCodePoint(code)-
æ°å¤
codeã§æåãçæãã¾ã:alert( String.fromCodePoint(90) ); // Zã¾ãã
\ã¨ããã«ç¶ã16鲿°ã®ã³ã¼ãã使ã£ã¦ãã¦ãã³ã¼ãæåã追å ãããã¨ãã§ãã¾ã:// 90 㯠16鲿°ã§ 5a ã§ã alert( '\u005a' ); // Z
ããã§ãã³ã¼ã 65..220 (ã©ãã³ã»ã¢ã«ãã¡ãããã¨ãã®ä»ãå¤å°)ã®æåãä½ãå¦çãè¦ã¦ã¿ã¾ãããã:
let str = '';
for (let i = 65; i <= 220; i++) {
str += String.fromCodePoint(i);
}
alert( str );
// ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÂÂÂÂÂ
// ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½¾¿ÃÃÃÃÃÃ
ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ
ãããã¾ããï¼å¤§æåãæåã§ããã®å¾å°ãç¹æ®æåãããããã®å¾ã«å°æåã§ãã
ããã§ããªã a > Z ãªã®ããæããã«ãªãã¾ããã
æåã¯ããã®æ°å¤ã³ã¼ãã§æ¯è¼ããã¾ãããã大ããã³ã¼ãã¯ããã®æåã¯ãã大ãããã¨ãæå³ãã¾ããa (97) ã®ã³ã¼ãã¯ãZ (90) ããã大ããã§ãã
- å ¨ã¦ã®å°æåã¯å¤§æåã®å¾ã«æ¥ã¾ãããªããªãããããã®ã³ã¼ãã¯ãã大ããããã§ãã
Ãã®ãããªãåºæ¬ã®ã¢ã«ãã¡ãããã¨ã¯å¥æ±ãã®æåãããã¤ãããã¾ããããã§ã¯ããã®ã³ã¼ãã¯aããzã®ã©ã®æåããã大ããã§ãã
æ£ããæ¯è¼
æå忝è¼ãããããã® âæ£ããâ ã¢ã«ã´ãªãºã ã¯è¦ãç®ããè¤éã§ãããªããªããã¢ã«ãã¡ãããã¯è¨èªã«ãã£ã¦ç°ãªãããã§ããç°ãªãã¢ã«ãã¡ãããã§ã¯ãåãããã«ã¿ããæåã§ãç°ãªã£ã¦ä½ç½®ãããã¨ãããã¾ãã
ãªã®ã§ããã©ã¦ã¶ã¯æ¯è¼ããè¨èªãç¥ãå¿ è¦ãããã¾ãã
幸éãªãã¨ã«ãå ¨ã¦ã®ç¾ä»£ã®ãã©ã¦ã¶ (IE10 ã¯è¿½å ã®ã©ã¤ãã©ãª Intl.JS ãå¿ è¦ã¨ãã¾ã)ã¯å½éæ¨æº ECMA 402 ããµãã¼ããã¾ãã
ããã¯æ¬¡ã®ã«ã¼ã«ã«å¾ã£ããç°ãªãè¨èªã§æååãæ¯è¼ããããã®ç¹æ®ãªã¡ã½ãããæä¾ãã¾ãã
str.localeCompare(str2) å¼ã³åºã:
- è¨èªè¦åã«å¾ã£ã¦ã
strãstr2ãã大ããå ´åã1ãè¿ãã¾ãã strãstr2ããå°ããå ´åã¯-1ãè¿ãã¾ãã- ããããç価ãªå ´åã¯
0ãè¿ãã¾ãã
ä¾:
alert( 'Ãsterreich'.localeCompare('Zealand') ); // -1
ãã®ã¡ã½ãã㯠the documentation ã§æå®ããã¦ãã2ã¤ã®è¿½å ã®å¼æ°ãæã¡ã¾ããããã«ããè¨èªãæå®ãããã¨ãã§ã(ããã©ã«ãã¯ç°å¢ãã夿ããã¾ã)ã大æåã¨å°æåãã"a" 㨠"aÌ" ãåãããã«æ±ããããªã©ã®è¿½å ã®ã«ã¼ã«ãè¨å®ãããã¨ãã§ãã¾ãã
å é¨, Unicode
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãæååã®å 鍿§é ã«ã¤ãã¦è©³ãã説æãã¾ãã ãã®ç¥èã¯ãçµµæåãçããæ°å¦çãªè±¡å½¢æåããã®ä»ã®çããè¨å·ãæ±ãäºå®ã®å ´åã«ä¾¿å©ã§ãã
ãããããµãã¼ãããäºå®ããªãå ´åã«ã¯ããã®ã»ã¯ã·ã§ã³ã¯ã¹ããããã¦ãOKã§ãã
ãµãã²ã¼ããã¢
ã»ã¨ãã©ã®è¨å·ã¯2ãã¤ãã®ã³ã¼ããæã£ã¦ãã¾ãã ã»ã¨ãã©ã®ã¨ã¼ãããè¨èªãæ°åãããã«ã¯è±¡å½¢æåã®å¤ãã®æåã¯ã2ãã¤ã表ç¾ã§ãã
ãããã2ãã¤ãã®çµã¿åãã㯠65536 éããã許ãããããã¹ã¦ã®è¨å·ã表ç¾ããã«ã¯ååã§ã¯ããã¾ããããªã®ã§ãé常ã«çããè¨å·ã¯ âãµãã²ã¼ããã¢â ã¨å¼ã°ãã2ãã¤ãæåã®ãã¢ã§ã¨ã³ã³ã¼ãããã¦ãã¾ãã
ãã®ãããªè¨å·ã®é·ã㯠2 ã§ã:
alert( 'ð³'.length ); // 2, MATHEMATICAL SCRIPT CAPITAL X
alert( 'ð'.length ); // 2, FACE WITH TEARS OF JOY
alert( 'ð©·¶'.length ); // 2, a rare chinese hieroglyph
JavaScriptãä½ãããã¨ãããµãã²ã¼ããã¢ã¯åå¨ããªãã£ããããè¨èªã¨ãã¦æ£ããå¦çããã¦ããªããã¨ã«æ³¨æãã¦ãã ãã!
ç§ãã¡ã¯ãä¸ã®ä¾ã®åæååã§1ã¤ã®è¨å·ãæå®ãã¦ãã¾ãããlength ã®çµæã¯ 2 ã§ãã
String.fromCodePoint 㨠str.codePointAt ã¯ãµãã²ã¼ããã¢ãæ£ããæ±ãç¨ãªã¡ã½ããã§ãããããã¯æè¿è¨èªã«ç»å ´ãã¾ãããããã¾ã§ã¯ã String.fromCharCode 㨠str.charCodeAt ã ãã§ããããããã®ã¡ã½ããã¯å®éã«ã¯ fromCodePoint/codePointAt ã¨åãã§ããããµãã²ã¼ããã¢ã§ã¯ä¸æãåãã¾ããã
ãããããµãã²ã¼ããã¢ã¯2ã¤ã®æåã¨ãã¦æ±ããããããè¨å·ãåå¾ããã®ãé£ããå ´åãããã¾ã:
alert( 'ð³'[0] ); // è¦ç¥ãã¬è¨å·...
alert( 'ð³'[1] ); // ...ãµãã²ã¼ããã¢ã®çå²ã
ãµãã²ã¼ããã¢ã®åæåã¯ããäºããããªãã¨æå³ãæããªããã¨ã«æ³¨æãã¦ãã ããããã®ãããä¸ã®ä¾ã® alert ã¯å®éã«ã¯ã´ãã表示ããã¾ãã
æè¡çã«ã¯ããµãã²ã¼ããã¢ããããã®ã³ã¼ãã§æ¤åºããã¾ã: ããæåã 0xd800..0xdbff ã®ä¸ã®ã³ã¼ãã§ããå ´åãããã¯ãµãã²ã¼ããã¢ã®æåã®ãã¼ãã§ããæ¬¡ã®æå(2ã¤ç®ã®ãã¼ã)㯠0xdc00..0xdfff ã®ä¸ã®ã³ã¼ãã§ããå¿
è¦ãããã¾ãããããã®ç¯å²ã¯ãæ¨æºä»æ§ã§ãµãã²ã¼ããã¢å°ç¨ã¨ãã¦äºç´ããã¦ãã¾ãã
ä¸ã®ã±ã¼ã¹:
// charCodeAt ã¯ãµãã²ã¼ããã¢ãèªèãã¾ããããã®ããä¸é¨åã®ã³ã¼ããè¿ãã¾ã
alert( 'ð³'.charCodeAt(0).toString(16) ); // d835, 0xd800 㨠0xdbff ã®é
alert( 'ð³'.charCodeAt(1).toString(16) ); // dcb3, 0xdc00 㨠0xdfff ã®é
ããªãã¯ãå¾ã®ãã£ãã¿ã¼ å復å¯è½ãªãªãã¸ã§ã¯ã ã§ãµãã²ã¼ããã¢ãæ±ãããå¤ãã®æ¹æ³ãè¦ã¤ããã§ããããæãããããããããã®ç¹æ®ãªã©ã¤ãã©ãªãããã¾ãããããã§è§¦ããã»ã©æåãªãã®ã¯ããã¾ããã
åé³è¨å·ã¨æ£è¦å
å¤ãã®è¨èªã§ã¯ãä¸/ä¸ã«ãã¼ã¯ãæã¤åºæ¬æåã§æ§æãããè¨å·ãããã¾ãã
ä¾ãã°ãæå a ã¯ Ã Ã¡Ã¢Ã¤Ã£Ã¥Ä ã®ãã¼ã¹ã®æåã§ããæãä¸è¬ç㪠âè¤åâ æåã¯ãUTF-16ãã¼ãã«ã«ç¬èªã®ã³ã¼ããæã£ã¦ãã¾ãã ããããå¯è½ãªçµã¿åãããå¤ããããããããããã¹ã¦ã§ã¯ããã¾ããã
ä»»æã®è¤åæåããµãã¼ããããããUTF-16 ã§ã¯ããã¤ãã®ã¦ãã³ã¼ãæåã使ããã¨ãã§ãã¾ãããã¼ã¹æåã¨ããã âè£ é£¾â ãã1ã¤ã¾ãã¯è¤æ°ã® âãã¼ã¯â æåã§ãã
ãã¨ãã°ã S ã®å¾ã«ç¹å¥ãª âä¸ã«ãããâ æåï¼ã³ã¼ã \u0307ï¼ãç¶ãå ´åããã㯠SÌ ã¨ãã¦è¡¨ç¤ºããã¾ãã
alert( 'S\u0307' ); // SÌ
ããæåã®ä¸(ã¾ãã¯ä¸)ã«è¿½å ã®ãã¼ã¯ãå¿ è¦ãªå ´åãåã«å¿ è¦ãªãã¼ã¯æåã追å ããã ãã§ãã
ãã¨ãã°ãâä¸ã¸ã®ãããâ æå (ã³ã¼ã \u0323) ã追å ããã¨ãâä¸ã¨ä¸ã®ãããã«ã¤ãã Sâ: SÌÌ£ ã«ãªãã¾ãã
ä¾:
alert( 'S\u0307\u0323' ); // SÌÌ£
ããã¯ç´ æ´ãããæè»æ§ãæä¾ãã¾ãããè峿·±ãåé¡ãããã¾ã: 2ã¤ã®æåãè¦è¦çã«ã¯åãããã«è¦ããããããã¾ããããç°ãªãã¦ãã³ã¼ãæ§æã§è¡¨ç¾ãããå¯è½æ§ãããã¨ãããã¨ã§ãã
ä¾:
let s1 = 'S\u0307\u0323'; // SÌÌ£, S + ä¸ã®ããã + ä¸ã®ããã
let s2 = 'S\u0323\u0307'; // SÌÌ£, S + ä¸ã®ããã + ä¸ã®ããã
alert( `s1: ${s1}, s2: ${s2}` );
alert( s1 == s2 ); // false ï¼æåã¯åä¸ã«è¦ãã¾ããï¼
ããã解決ããããã«ãããããã®æåã1ã¤ã® âæ¨æºã®â å½¢ã«ãã âã¦ãã³ã¼ãæ£è¦åâ ã¢ã«ã´ãªãºã ãããã¾ãã
str.normalize() ã§å®è£ ããã¦ãã¾ãã
alert( "S\u0307\u0323".normalize() == "S\u0323\u0307".normalize() ); // true
æã
ã®ä¾ã®å ´åãnormalize() ã¯å®éã«3ã¤ã®æåã®ä¸¦ã³ã1ã¤ã®æå \u1e68 (S ã¨2ã¤ã®ããã)ã«ã¾ã¨ãã¦ãã¾ãã
alert( "S\u0307\u0323".normalize().length ); // 1
alert( "S\u0307\u0323".normalize() == "\u1e68" ); // true
å®éã«ã¯ãããã¯å¿
ãããããã§ã¯ããã¾ãããçç±ã¯ãè¨å· SÌÌ£ 㯠âååã«ä¸è¬çâ ãªã®ã§ãUTF-16 ã®ä½æè
ããããã¡ã¤ã³ãã¼ãã«ã«å«ããã³ã¼ããä¸ããããã§ãã
æ£è¦åã«ã¼ã«ãããªã¢ã³ãã«ã¤ãã¦ãã£ã¨å¦ã³ããå ´åããããã¯ã¦ãã³ã¼ãæ¨æº Unicode Normalization Forms ã®ä»é²ã«è¨è¼ããã¦ãã¾ããããã»ã¨ãã©å®è·µçãªç®çã«ããã¦ã¯ããã®ã»ã¯ã·ã§ã³ã®å 容ã§ååã§ãã
ãµããª
- å¼ç¨ç¬¦ã«ã¯3ã¤ã®ã¿ã¤ããããã¾ããããã¯ã¯ã©ã¼ãã¯è¤æ°è¡ã«ã¾ããããå¼ãåãè¾¼ããã¨ãã§ãã¾ãã
- JavaScriptã§ã®æåå㯠UTF-16 ã使ã£ã¦ã¨ã³ã³ã¼ãããã¦ãã¾ãã
- ç§ãã¡ã¯ã
\nã®ãããªç¹æ®æåã使ããã¨ãã§ãã\u...ã使ã£ãã¦ãã³ã¼ãã§æåãæ¿å ¥ãããã¨ãã§ãã¾ãã - æåãåå¾ããããã«ã
[]ã使ãã¾ãã - é¨åæååãåå¾ããããã«ã
sliceã¾ãã¯substringã使ãã¾ãã - æååãå°æå/大æåã«ããããã«ã
toLowerCase/toUpperCaseã使ãã¾ãã - ã·ã³ãã«ãªãã§ãã¯ã§ãé¨åæååãæ¢ãããã«ã¯
indexOfã¾ãã¯includes/startsWith/endsWithã使ãã¾ãã - è¨èªã«å¾ã£ã¦æååãæ¯è¼ããããã«ã¯ã
localeCompareã使ãã¾ããããã§ãªãå ´åã¯ãæåã³ã¼ãã§æ¯è¼ããã¾ãã
æååã«ã¯ããã®ä»ããã¤ãã®å½¹ç«ã¤ã¡ã½ãããããã¾ã:
str.trim()â æååã®æåã¨æå¾ã®ã¹ãã¼ã¹ãé¤å»ãã¾ããstr.repeat(n)â æååãnåç¹°ãè¿ãã¾ãã- ãªã©ãªã©ã詳細㯠manual ãè¦ã¦ãã ããã
æååãã¾ããæ£è¦è¡¨ç¾ã§æ¤ç´¢/ç½®æãããã¡ã½ãããæã£ã¦ãã¾ãããããããã®ãããã¯ã¯å¥ã®ãã£ãã¿ã¼ã§ããã®ããµããããã®ã§ãå¾ã»ã©æ»ã£ã¦ãã¾ãããã
ã³ã¡ã³ã
<code>ã¿ã°ã使ã£ã¦ãã ãããè¤æ°è¡ã®å ´åã¯<pre>ãã10è¡ãè¶ ããå ´åã«ã¯ãµã³ãããã¯ã¹ã使ã£ã¦ãã ãã(plnkr, JSBin, codepenâ¦)ã