У JavaScript ÑекÑÑÐ¾Ð²Ñ Ð´Ð°Ð½Ñ Ð·Ð±ÐµÑÑгаÑÑÑÑÑ Ñ Ð²Ð¸Ð³Ð»ÑÐ´Ñ ÑÑдкÑв. Ðе ÑÑнÑÑ Ð¾ÐºÑемого ÑÐ¸Ð¿Ñ Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑимволÑ.
ÐнÑÑÑÑÑнÑй ÑоÑÐ¼Ð°Ñ Ð´Ð»Ñ ÑÑдкÑв завжди UTF-16, вÑн не пÑивʼÑзаний до кодÑÐ²Ð°Ð½Ð½Ñ ÑÑоÑÑнки.
Ðапки
Ðгадаймо види лапок.
Ð Ñдки можÑÑÑ Ð±ÑÑи вклÑÑÐµÐ½Ñ Ð² одинаÑÐ½Ñ Ð»Ð°Ð¿ÐºÐ¸, подвÑÐ¹Ð½Ñ Ð»Ð°Ð¿ÐºÐ¸ або звоÑоÑÐ½Ñ Ð·Ð½Ð°ÐºÐ¸:
let single = 'одинаÑнÑ-лапки';
let double = "подвÑйнÑ-лапки";
let backticks = `звоÑоÑнÑ-лапки`;
ÐдинаÑÐ½Ñ Ñа подвÑÐ¹Ð½Ñ Ð»Ð°Ð¿ÐºÐ¸ по ÑÑÑÑ Ð¾Ð´Ð½Ð°ÐºÐ¾Ð²Ñ. Ðднак звоÑоÑÐ½Ñ Ð»Ð°Ð¿ÐºÐ¸ дозволÑÑÑÑ Ð½Ð°Ð¼ вÑÑавлÑÑи бÑдÑ-Ñкий виÑаз Ñ ÑÑдок, загоÑÑаÑÑи його Ñ ${â¦}:
function sum(a, b) {
return a + b;
}
alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
Ще однÑÑÑ Ð¿ÐµÑÐµÐ²Ð°Ð³Ð¾Ñ Ð²Ð¸ÐºÐ¾ÑиÑÑÐ°Ð½Ð½Ñ Ð·Ð²Ð¾ÑоÑÐ½Ð¸Ñ Ð»Ð°Ð¿Ð¾Ðº Ñ Ñе, Ñо вони дозволÑÑÑÑ ÑÑÐ´ÐºÑ Ð¾Ñ Ð¾Ð¿Ð»ÑваÑи кÑлÑка лÑнÑй:
let guestList = `ÐоÑÑÑ:
* Ðван
* ÐеÑÑо
* ÐаÑÑÑ
`;
alert(guestList); // ÑпиÑок гоÑÑей в кÑлÑка ÑÑдкÑв
ÐиглÑÐ´Ð°Ñ Ð¿ÑиÑодно, пÑавда? Ðле одинаÑÐ½Ñ Ð°Ð±Ð¾ подвÑÐ¹Ð½Ñ Ð»Ð°Ð¿ÐºÐ¸ Ñак не пÑаÑÑÑÑÑ.
ЯкÑо ми ÑпÑобÑÑмо ÑÑ Ð²Ð¸ÐºÐ¾ÑиÑÑаÑи в кÑлÑка ÑÑдкÑв, бÑде помилка:
let guestList = "ÐоÑÑÑ: // Ðомилка: Unexpected token ILLEGAL
* Ðван";
ÐдинаÑÐ½Ñ Ñа подвÑÐ¹Ð½Ñ Ð»Ð°Ð¿ÐºÐ¸ беÑÑÑÑ ÑвÑй поÑаÑок з давнÑÑ ÑаÑÑв ÑÑвоÑÐµÐ½Ð½Ñ Ð¼Ð¾Ð²Ð¸, коли не бÑло поÑÑеби Ñ Ð±Ð°Ð³Ð°ÑолÑнÑÐ¹Ð½Ð¸Ñ ÑÑÐ´ÐºÐ°Ñ . ÐвоÑоÑÐ½Ñ Ð»Ð°Ð¿ÐºÐ¸ зʼÑвилиÑÑ Ð½Ð°Ð±Ð°Ð³Ð°Ñо пÑзнÑÑе Ñ ÑÐ¾Ð¼Ñ Ñ Ð±ÑлÑÑ ÑнÑвеÑÑалÑними.
ÐвоÑоÑÐ½Ñ Ð»Ð°Ð¿ÐºÐ¸ Ñакож дозволÑÑÑÑ Ð½Ð°Ð¼ задаÑи âÑÐ°Ð±Ð»Ð¾Ð½Ð½Ñ ÑÑнкÑÑÑâ пеÑед пеÑÑими звоÑоÑнÑми лапками. СинÑакÑÐ¸Ñ Ñакий: func`string`. ФÑнкÑÑÑ func викликаÑÑÑÑÑ Ð°Ð²ÑомаÑиÑно, оÑÑимÑÑ ÑÑдок Ñ Ð²Ð±ÑÐ´Ð¾Ð²Ð°Ð½Ñ Ð² Ð½ÐµÑ Ð²Ð¸Ñази Ñ Ð¼Ð¾Ð¶Ðµ ÑÑ
обÑобиÑи. Це називаÑÑÑÑÑ âÑеговим Ñаблономâ, Ñе ÑÑдко викоÑиÑÑовÑÑÑÑÑÑ Ð½Ð° пÑакÑиÑÑ, але ви можеÑе пÑоÑиÑаÑи деÑалÑнÑÑе пÑо Ñе на MDN: Template literals.
СпеÑÑалÑÐ½Ñ Ñимволи
Ще можна ÑÑвоÑиÑи багаÑолÑнÑÐ¹Ð½Ñ ÑÑдки з одинаÑними Ñа подвÑйними лапками за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ Ñак званого âÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑÑдкаâ, запиÑаного Ñк \n, Ñкий познаÑÐ°Ñ ÑозÑив ÑÑдка:
let guestList = "ÐоÑÑÑ:\n * Ðван\n * ÐеÑÑо\n * ÐаÑÑÑ";
alert(guestList); // ÑпиÑок гоÑÑей в декÑлÑка ÑÑдкÑв, Ñк Ñ Ð²Ð¸Ñе
ÐапÑиклад, ÑÑ Ð´Ð²Ð° ÑÑдки ÑÑвнознаÑнÑ, пÑоÑÑо напиÑÐ°Ð½Ñ Ð¿Ð¾-ÑÑзномÑ:
let str1 = "ÐÑивÑÑ\nСвÑÑ"; // два ÑÑдки з викоÑиÑÑаннÑм "ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ ÑÑдка"
// два ÑÑдки з викоÑиÑÑаннÑм звиÑайного нового ÑÑдка Ñа звоÑоÑниÑ
лапок
let str2 = `ÐÑивÑÑ
СвÑÑ`;
alert(str1 == str2); // true
Рй ÑнÑÑ, Ð¼ÐµÐ½Ñ Ð¿Ð¾ÑиÑÐµÐ½Ñ âÑпеÑÑалÑнÑâ Ñимволи.
| Символ | ÐÐ¿Ð¸Ñ |
|---|---|
\n |
РозÑив ÑÑдка |
\r |
У ÑекÑÑовиÑ
ÑайлаÑ
Windows комбÑнаÑÑÑ Ð´Ð²Ð¾Ñ
ÑимволÑв \r\n ÑвлÑÑ ÑÐ¾Ð±Ð¾Ñ ÑозÑив ÑÑдка, ÑÐ¾Ð´Ñ Ñк в ÑнÑиÑ
ÐС, Ñе пÑоÑÑо \n. Так ÑклалоÑÑ Ð· ÑÑÑоÑиÑниÑ
пÑиÑин, бÑлÑÑÑÑÑÑ ÐРпÑд Windows Ñакож ÑозÑмÑÑ \n |
\', \", \` |
Ðапки |
\\ |
ÐвоÑоÑний ÑÐ»ÐµÑ |
\t |
Ðнак ÑабÑлÑÑÑÑ |
\b, \f, \v |
Backspace, Form Feed, Vertical Tab â збеÑÑгаÑÑÑÑÑ Ð´Ð»Ñ Ð·Ð²Ð¾ÑоÑÐ½Ð¾Ñ ÑÑмÑÑноÑÑÑ, заÑаз не викоÑиÑÑовÑÑÑÑÑÑ |
УÑÑ ÑпеÑÑалÑÐ½Ñ Ñимволи поÑинаÑÑÑÑÑ Ð·Ñ Ð·Ð²Ð¾ÑоÑного ÑлеÑа \. Ðого Ñакож називаÑÑÑ âÑимволом екÑанÑваннÑâ.
ÐÑкÑлÑки вÑн не зовÑÑм звиÑайний, Ñо ÑкÑо нам поÑÑÑбно показаÑи звоÑоÑний ÑÐ»ÐµÑ \ Ñ ÑÑдкÑ, нам поÑÑÑбно подвоÑÑи його:
alert( `ÐвоÑоÑний ÑлеÑ: \\` ); // ÐвоÑоÑний ÑлеÑ: \
Так Ð·Ð²Ð°Ð½Ñ âекÑанованÑâ лапки \', \", \` викоÑиÑÑовÑÑÑÑÑÑ Ð´Ð»Ñ Ð²ÑÑавки ÑиÑ
лапок в ÑÑдок, Ñкий обмежено Ñаким же Ñипом лапок.
ÐапÑиклад:
alert( 'Ðм\'Ñ Ð¼Ð¾Ñ â ÐоÑж!' ); // Ðм'Ñ Ð¼Ð¾Ñ â ÐоÑж!
Як баÑиÑе, ми Ð¿Ð¾Ð²Ð¸Ð½Ð½Ñ âекÑанÑваÑиâ Ð»Ð°Ð¿ÐºÑ Ð·Ð²Ð¾ÑоÑним ÑлеÑем \', оÑкÑлÑки ÑнакÑе ÑÑ Ð»Ð°Ð¿ÐºÐ° ознаÑала б кÑнеÑÑ ÑÑдка.
ÐвÑÑно ж, поÑÑÑбно âекÑанÑваÑиâ лиÑе ÑÐ°ÐºÑ Ð»Ð°Ð¿ÐºÐ¸, Ñкими обÑамлений ÑÑдок. Ðбо Ñе бÑлÑÑ ÐµÐ»ÐµÐ³Ð°Ð½Ñним ÑÑÑеннÑм бÑло б замÑÑÑÑ ÑÑого ÑкоÑиÑÑаÑиÑÑ Ð¿Ð¾Ð´Ð²Ñйними або звоÑоÑними лапками:
alert( `Ðм'Ñ Ð¼Ð¾Ñ â ÐоÑж!` ); // Ðм'Ñ Ð¼Ð¾Ñ â ÐоÑж!
ÐкÑÑм ÑиÑ
ÑпеÑÑалÑниÑ
ÑимволÑв, ÑÑнÑÑ Ñакож ÑпеÑÑалÑна ноÑаÑÑÑ Ð´Ð»Ñ ÐºÐ¾Ð´Ñв Unicode \uâ¦, вона викоÑиÑÑовÑÑÑÑÑÑ ÑÑдко Ñа опиÑана в додаÑÐºÐ¾Ð²Ð¾Ð¼Ñ ÑоздÑÐ»Ñ Ð¿Ñо Unicode.
Ðовжина ÑÑдка
ÐлаÑÑивÑÑÑÑ length мÑÑÑиÑÑ Ð² ÑÐ¾Ð±Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñ ÑÑдка:
alert( `ÐоÑ\n`.length ); // 4
ÐвеÑнÑÑÑ ÑвагÑ, Ñо \n â Ñе один ÑпеÑÑалÑний Ñимвол, ÑÐ¾Ð¼Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° ÑÑвна 4.
length â Ñе влаÑÑивÑÑÑÑÐÑди з доÑвÑдом ÑобоÑи в ÑнÑиÑ
моваÑ
випадково намагаÑÑÑÑÑ Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ñи влаÑÑивÑÑÑÑ, додаÑÑи кÑÑÐ³Ð»Ñ Ð´Ñжки: вони пиÑÑÑÑ str.length() замÑÑÑÑ str.length. Це не ÑпÑаÑÑÑ.
ÐвеÑнÑÑÑ ÑвагÑ, Ñо str.length â Ñе ÑиÑлове знаÑеннÑ, а не ÑÑнкÑÑÑ, додаваÑи дÑжки не поÑÑÑбно. Ðе .length(), а .length.
ÐоÑÑÑп до ÑимволÑв
ÐÑÑимаÑи Ñимвол, коÑÑий Ð·Ð°Ð¹Ð¼Ð°Ñ Ð¿Ð¾Ð·Ð¸ÑÑÑ pos, можна за Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾Ñ ÐºÐ²Ð°Ð´ÑаÑниÑ
дÑжок: [pos], або викликаÑи меÑод str.at(pos). ÐеÑÑий Ñимвол Ð·Ð°Ð¹Ð¼Ð°Ñ Ð½ÑлÑÐ¾Ð²Ñ Ð¿Ð¾Ð·Ð¸ÑÑÑ:
let str = `ÐÑивÑÑ`;
// пеÑÑий Ñимвол
alert( str[0] ); // Ð
alert( str.charAt(0) ); // Ð
// оÑÑаннÑй Ñимвол
alert( str[str.length - 1] ); // Ñ
alert( str.at(-1) ); // Ñ
Як баÑиÑе, пеÑевага меÑÐ¾Ð´Ñ .at(pos) полÑÐ³Ð°Ñ Ð² ÑомÑ, Ñо вÑн допÑÑÐºÐ°Ñ Ð²ÑдâÑÐ¼Ð½Ñ Ð¿Ð¾Ð·Ð¸ÑÑÑ. ЯкÑо pos вÑдâÑмне ÑиÑло, ÑÐ¾Ð´Ñ Ð¿Ð¾Ð·Ð¸ÑÑÑ Ð²ÑдÑаÑ
овÑÑÑÑÑÑ Ð· кÑнÑÑ ÑÑдка.
ÐÑже, .at(-1) ознаÑÐ°Ñ Ð¾ÑÑаннÑй Ñимвол, а .at(-2) â пеÑедоÑÑаннÑй, ÑоÑо.
ÐвадÑаÑÐ½Ñ Ð´Ñжки завжди повеÑÑаÑÑÑ undefined Ð´Ð»Ñ Ð²ÑдâÑмниÑ
ÑндекÑÑв, напÑиклад:
let str = `ÐÑивÑÑ`;
alert( str[-2] ); // undefined
alert( str.at(-2) ); // Ñ
Ðи Ñакож можемо пеÑебÑаÑи ÑÑдок поÑимволÑно, викоÑиÑÑовÑÑÑи for..of:
for (let char of "ÐÑивÑÑ") {
alert(char); // Ð,Ñ,и,в,Ñ,Ñ (char â ÑпоÑаÑÐºÑ "Ð", поÑÑм "Ñ", поÑÑм "и" Ñ Ñак далÑ)
}
Ð Ñдки незмÑннÑ
Ð JavaScript ÑÑдки не можна змÑнÑваÑи. ÐмÑниÑи Ñимвол неможливо.
СпÑобÑÑмо показаÑи на пÑикладÑ:
let str = 'Ðй';
str[0] = 'о'; // помилка
alert( str[0] ); // не пÑаÑÑÑ, ÑÐ¾Ð¼Ñ Ñо Ñ Ð¿Ð¾Ð¿ÐµÑеднÑÐ¾Ð¼Ñ ÑÑÐ´ÐºÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°
Ðожна ÑÑвоÑиÑи новий ÑÑдок замÑÑÑÑ ÑÑаÑого, запиÑавÑи його в ÑÑ ÑÐ°Ð¼Ñ Ð·Ð¼ÑннÑ.
ÐÑÑ Ñак:
let str = 'Ðй';
str = 'о' + str[1]; // замÑнÑÑмо ÑÑдок
alert( str ); // ой
РнаÑÑÑÐ¿Ð½Ð¸Ñ ÑоздÑÐ»Ð°Ñ Ð¼Ð¸ побаÑимо бÑлÑÑе пÑикладÑв.
ÐмÑна ÑегÑÑÑÑÑ
ÐеÑоди toLowerCase() Ñа toUpperCase() змÑнÑÑÑÑ ÑегÑÑÑÑ ÑимволÑв:
alert( 'ÐнÑеÑÑейÑ'.toUpperCase() ); // ÐÐТÐРФÐÐС
alert( 'ÐнÑеÑÑейÑ'.toLowerCase() ); // ÑнÑеÑÑейÑ
Ðбо ÑкÑо ми Ñ Ð¾Ñемо пеÑенеÑÑи в нижнÑй ÑегÑÑÑÑ ÐºÐ¾Ð½ÐºÑеÑний Ñимвол:
alert( 'Interface'[0].toLowerCase() ); // 'Ñ'
ÐоÑÑк пÑдÑÑдка
ÐÑнÑÑ Ð´ÐµÐºÑлÑка ÑпоÑобÑв Ð´Ð»Ñ Ð¿Ð¾ÑÑÐºÑ Ð¿ÑдÑÑдка.
str.indexOf
ÐеÑÑий меÑод â str.indexOf(substr, pos).
ÐÑн ÑÑÐºÐ°Ñ Ð¿ÑдÑÑдок substr в ÑÑÐ´ÐºÑ str, поÑинаÑÑи з позиÑÑÑ pos, Ñ Ð¿Ð¾Ð²ÐµÑÑÐ°Ñ Ð¿Ð¾Ð·Ð¸ÑÑÑ, де знаÑ
одиÑÑÑÑ Ð·Ð±Ñг, або ÑкÑо збÑгÑв не бÑло знайдено, Ñо -1.
ÐапÑиклад:
let str = 'ÐÑÐ´Ð¶ÐµÑ Ð· ÑденÑиÑÑкаÑоÑом';
alert( str.indexOf('ÐÑджеÑ') ); // 0, ÑÐ¾Ð¼Ñ Ñо 'ÐÑджеÑ' бÑло знайдено на поÑаÑкÑ
alert( str.indexOf('вÑджеÑ') ); // -1, збÑгÑв не знайдено, поÑÑк ÑÑÑливий до ÑегÑÑÑÑÑ
alert( str.indexOf("Ñд") ); // 1, пÑдÑÑдок "Ñд" знайдено на позиÑÑÑ 1 (..ÑÐ´Ð¶ÐµÑ Ð· ÑденÑиÑÑкаÑоÑом)
ÐеобовʼÑзковий дÑÑгий паÑамеÑÑ pos дозволÑÑ Ð½Ð°Ð¼ поÑаÑи поÑÑк Ñз Ð·Ð°Ð´Ð°Ð½Ð¾Ñ Ð¿Ð¾Ð·Ð¸ÑÑÑ.
ÐапÑиклад, пеÑÑий збÑг "Ñд" знаÑ
одиÑÑÑÑ Ð½Ð° позиÑÑÑ 1. Щоб знайÑи наÑÑÑпний збÑг, поÑнемо поÑÑк з позиÑÑÑ 2:
let str = 'ÐÑÐ´Ð¶ÐµÑ Ð· ÑденÑиÑÑкаÑоÑом';
alert( str.indexOf('Ñд', 2) ) // 9
Щоб знайÑи ÑÑÑ Ð·Ð±Ñги, нам поÑÑÑбно запÑÑÑиÑи indexOf в ÑиклÑ. Ðожен новий виклик поÑинаÑÑÑÑÑ Ð· позиÑÑÑ Ð¿ÑÑÐ»Ñ Ð¿Ð¾Ð¿ÐµÑеднÑого збÑгÑ:
let str = 'ХиÑÑий, Ñк лиÑиÑÑ, ÑилÑний, Ñк Як';
let target = 'Ñк'; // давайÑе знайдемо Ñе
let pos = 0;
while (true) {
let foundPos = str.indexOf(target, pos);
if (foundPos == -1) break;
alert( `Ðнайдено ÑÑÑ: ${foundPos}` );
pos = foundPos + 1; // пÑодовжÑÑмо з наÑÑÑÐ¿Ð½Ð¾Ñ Ð¿Ð¾Ð·Ð¸ÑÑÑ
}
Той Ñамий алгоÑиÑм можна запиÑаÑи коÑоÑÑе:
let str = "ХиÑÑий, Ñк лиÑиÑÑ, ÑилÑний, Ñк Як";
let target = "Ñк";
let pos = -1;
while ((pos = str.indexOf(target, pos + 1)) != -1) {
alert( pos );
}
str.lastIndexOf(substr, position)Також Ñ ÑÑ Ð¾Ð¶Ð¸Ð¹ меÑод str.lastIndexOf(substr, position), Ñо виконÑÑ Ð¿Ð¾ÑÑк вÑд кÑнÑÑ ÑÑдка до його поÑаÑкÑ.
У нÑÐ¾Ð¼Ñ Ð±ÑдÑÑÑ Ð¿ÐµÑеÑÐ°Ñ Ð¾Ð²Ð°Ð½Ñ Ð·Ð±Ñги в звоÑоÑÐ½Ð¾Ð¼Ñ Ð¿Ð¾ÑÑдкÑ.
ÐÑнÑÑ Ð½ÐµÐ·ÑÑÑнÑÑÑÑ Ð· indexOf в ÑÐ¼Ð¾Ð²Ñ if. Ðи не можемо помÑÑÑиÑи його в if Ñаким Ñином:
let str = "ÐÑÐ´Ð¶ÐµÑ Ð· ÑденÑиÑÑкаÑоÑом";
if (str.indexOf("ÐÑджеÑ")) {
alert("Ð ÑпÑвпадÑннÑ"); // не пÑаÑÑÑ
}
РпÑÐ¸ÐºÐ»Ð°Ð´Ñ Ð²Ð¸Ñе alert не вÑдобÑажаÑÑÑÑÑ, оÑкÑлÑки str.indexOf("ÐÑджеÑ") повеÑÑÐ°Ñ 0 (Ñе ознаÑаÑ, Ñо вÑн знайÑов збÑг Ñ Ð¿Ð¾ÑаÑковÑй позиÑÑÑ). Це пÑавилÑно, але if вважаÑ, Ñо 0 â Ñе false.
Ð¢Ð¾Ð¼Ñ Ð½Ð°Ð¼ поÑÑÑбно ÑобиÑи пеÑевÑÑÐºÑ Ð½Ð° -1, Ñк ÑÑÑ:
let str = "ÐÑÐ´Ð¶ÐµÑ Ð· ÑденÑиÑÑкаÑоÑом";
if (str.indexOf("ÐÑджеÑ") != -1) {
alert("Ð ÑпÑвпадÑннÑ"); // ÑÐµÐ¿ÐµÑ Ð¿ÑаÑÑÑ!
}
includes, startsWith, endsWith
СÑÑаÑнÑÑий меÑод str.includes(substr, pos) повеÑÑÐ°Ñ true/false в залежноÑÑÑ Ð²Ñд Ñого Ñи Ñ substr в ÑÑÐ´ÐºÑ str.
Цей меÑод доÑÑлÑно викоÑиÑÑовÑваÑи, коли поÑÑÑбно пеÑевÑÑиÑи Ñи Ñ Ð·Ð±Ñг, але не поÑÑÑбна позиÑÑÑ:
alert( "ÐÑÐ´Ð¶ÐµÑ Ð· ÑденÑиÑÑкаÑоÑом".includes("ÐÑджеÑ") ); // true
alert( "ÐÑивÑÑ".includes("ÐÑвай") ); // false
ÐеобовʼÑзковий дÑÑгий аÑгÑÐ¼ÐµÐ½Ñ pos â Ñе позиÑÑÑ Ð· ÑÐºÐ¾Ñ Ð¿Ð¾ÑнеÑÑÑÑ Ð¿Ð¾ÑÑк:
alert( "ÐÑджеÑ".includes("Ñд") ); // true
alert( "ÐÑджеÑ".includes("Ñд", 3) ); // false, поÑинаÑÑи з 3-го Ñимвола, пÑдÑÑдка "Ñд" немаÑ
ÐÑдповÑдно, меÑоди str.startsWith Ñа str.endsWith пеÑевÑÑÑÑÑÑ, Ñи поÑинаÑÑÑÑÑ Ñ Ñи закÑнÑÑÑÑÑÑÑ ÑÑдок певним пÑдÑÑдком.
alert( "ÐÑджеÑ".startsWith("ÐÑд") ); // true, "ÐÑджеÑ" поÑинаÑÑÑÑÑ Ð· "ÐÑд"
alert( "ÐÑджеÑ".endsWith("жеÑ") ); // true, "ÐÑджеÑ" закÑнÑÑÑÑÑÑÑ Ð¿ÑдÑÑдком "жеÑ"
ÐÑÑÐ¸Ð¼Ð°Ð½Ð½Ñ Ð¿ÑдÑÑдка
Ð 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ЯкÑо дÑÑгий аÑгÑÐ¼ÐµÐ½Ñ Ð²ÑдÑÑÑнÑй, ÑодÑ
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(не вклÑÑаÑÑиend).Цей меÑод майже Ñакий Ñамий Ñк Ñ
slice, алеsubstringдозволÑÑ Ð·Ð°Ð´Ð°ÑиstartбÑлÑÑе знаÑеннÑ, нÑжend(Ñ ÑÐ°ÐºÐ¾Ð¼Ñ Ð²Ð¸Ð¿Ð°Ð´ÐºÑ Ð²Ñн пÑоÑÑо помÑнÑÑ Ð·Ð½Ð°ÑеннÑstartÑendмÑÑÑÑми).ÐапÑиклад:
let str = "stringify"; // Ð´Ð»Ñ substring ÑÑ Ð´Ð²Ð° пÑиклади Ð¾Ð´Ð½Ð°ÐºÐ¾Ð²Ñ 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 ÑимволаЦей меÑод мÑÑÑиÑÑÑÑ Ð² Annex B ÑпеÑиÑÑкаÑÑÑ Ð¼Ð¾Ð²Ð¸. Це ознаÑаÑ, Ñо його маÑÑÑ Ð¿ÑдÑÑимÑваÑи лиÑе бÑаÑзеÑÐ½Ñ ÑÑÑÑÑ Javascript, Ñ Ð½Ðµ ÑекомендÑÑÑÑÑÑ Ð¹Ð¾Ð³Ð¾ викоÑиÑÑовÑваÑи. Ðа пÑакÑиÑÑ Ñе пÑдÑÑимÑÑÑÑÑÑ Ð²ÑÑди.
ÐавайÑе пÑдÑÑмÑÑмо ÑÑ Ð¼ÐµÑоди Ñоб не заплÑÑаÑиÑÑ:
| ÐеÑод | вибиÑаÑ⦠| вÑдʼÑÐ¼Ð½Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ |
|---|---|---|
slice(start, end) |
вÑд start до end (не вклÑÑаÑÑи end) |
дозволÑÑ Ð²ÑдʼÑÐ¼Ð½Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ |
substring(start, end) |
мÑж start Ñа end (не вклÑÑаÑÑи end) |
вÑдʼÑÐ¼Ð½Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ ÑнÑеÑпÑеÑÑÑÑÑÑÑ Ñк 0 |
substr(start, length) |
length ÑимволÑв вÑд start |
дозволÑÑ Ð²ÑдʼÑÐ¼Ð½Ñ Ð·Ð½Ð°ÑÐµÐ½Ð½Ñ start |
УÑÑ Ð²Ð¾Ð½Ð¸ можÑÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñи задаÑÑ. ФоÑмалÑно substr Ð¼Ð°Ñ Ð½ÐµÐ·Ð½Ð°Ñний недолÑк: вÑн опиÑаний не в оÑновнÑй ÑпеÑиÑÑкаÑÑÑ JavaScript, а в Annex B, Ñка оÑ
оплÑÑ Ð»Ð¸Ñе ÑÑнкÑÑÑ Ð±ÑаÑзеÑа, ÑÐºÑ ÑÑнÑÑÑÑ Ð¿ÐµÑеважно з ÑÑÑоÑиÑниÑ
пÑиÑин. Ð¢Ð¾Ð¼Ñ Ð½Ðµ бÑаÑзеÑÐ½Ñ ÑеÑедовиÑа, можÑÑÑ Ð½Ðµ пÑдÑÑимÑваÑи його. Ðле на пÑакÑиÑÑ Ñе пÑаÑÑÑ Ð²ÑÑди.
РдвоÑ
ÑнÑиÑ
ваÑÑанÑÑв slice деÑо гнÑÑкÑÑий, вÑн допÑÑÐºÐ°Ñ Ð²ÑдâÑÐ¼Ð½Ñ Ð°ÑгÑменÑи Ñа коÑоÑÑий в запиÑÑ.
ÐÑже, доÑÑаÑнÑо запамʼÑÑаÑи лиÑе slice з ÑиÑ
ÑÑÑоÑ
меÑодÑв.
ÐоÑÑвнÑÐ½Ð½Ñ ÑÑдкÑв
Як ми знаÑмо з ÑоздÑÐ»Ñ ÐпеÑаÑоÑи поÑÑвнÑннÑ, ÑÑдки поÑÑвнÑÑÑÑÑÑ Ñимвол за Ñимволом в алÑавÑÑÐ½Ð¾Ð¼Ñ Ð¿Ð¾ÑÑдкÑ.
ХоÑа, Ñ Ð´ÐµÑÐºÑ Ð´Ð¸Ð²Ð°ÑÑва.
-
ÐÑÑеÑа в Ð¼Ð°Ð»Ð¾Ð¼Ñ ÑегÑÑÑÑÑ Ð·Ð°Ð²Ð¶Ð´Ð¸ бÑлÑÑа за лÑÑеÑÑ Ñ Ð²ÐµÐ»Ð¸ÐºÐ¾Ð¼Ñ:
alert( 'a' > 'Z' ); // true -
ÐÑÑеÑи з дÑакÑиÑиÑними знаками âне по поÑÑдкÑâ:
alert( 'Ãsterreich' > 'Zealand' ); // trueЦе може пÑизвеÑÑи до Ð´Ð¸Ð²Ð½Ð¸Ñ ÑезÑлÑÑаÑÑв, ÑкÑо ми вÑдÑоÑÑÑÑмо ÑÑ Ð½Ð°Ð·Ð²Ð¸ кÑаÑн. ÐазвиÑай лÑди оÑÑкÑÑÑÑ, Ñо
ZealandбÑде пÑÑлÑÃsterreich.
Щоб ÑозÑмÑÑи, Ñо вÑдбÑваÑÑÑÑÑ, нам ÑлÑд бÑÑи в кÑÑÑÑ, Ñо ÑÑдки в JavaScript ÑеалÑÐ·Ð¾Ð²Ð°Ð½Ñ Ð· викоÑиÑÑаннÑм UTF-16. ТобÑо, кожен Ñимвол Ð¼Ð°Ñ ÑвÑй вÑдповÑдний ÑиÑловий код.
ÐÑнÑÑÑÑ ÑпеÑÑалÑÐ½Ñ Ð¼ÐµÑоди, ÑÐºÑ Ð´Ð¾Ð·Ð²Ð¾Ð»ÑÑÑÑ Ð¾ÑÑимаÑи Ñимвол по ÐºÐ¾Ð´Ñ Ñ Ð½Ð°Ð²Ð¿Ð°ÐºÐ¸.
str.codePointAt(pos)-
ÐовеÑÑÐ°Ñ Ð´ÐµÑÑÑкове ÑиÑло, Ñо Ñ ÐºÐ¾Ð´Ð¾Ð¼ ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð½Ð° позиÑÑÑ
pos:// лÑÑеÑи в ÑÑÐ·Ð½Ð¾Ð¼Ñ ÑегÑÑÑÑÑ Ð¼Ð°ÑÑÑ ÑÑÐ·Ð½Ñ ÐºÐ¾Ð´Ð¸ alert( "z".codePointAt(0) ); // 122 alert( "Z".codePointAt(0) ); // 90 alert( "z".codePointAt(0) ); // 122 alert( "z".codePointAt(0).toString(16) ); // 7a (ÑкÑо нам ÑÑеба знаÑÐµÐ½Ð½Ñ Ð² ÑÑÑÑнадÑÑÑковÑй ÑиÑÑÐµÐ¼Ñ ÑиÑленнÑ) String.fromCodePoint(code)-
СÑвоÑÑÑ Ñимвол за його кодом
codealert( String.fromCodePoint(90) ); // Z alert( String.fromCodePoint(0x5a) ); // Z (ми Ñакож можемо викоÑиÑÑовÑваÑи ÑÑÑÑнадÑÑÑкове знаÑÐµÐ½Ð½Ñ Ñк аÑгÑменÑ)
Ð¢ÐµÐ¿ÐµÑ Ð´Ð°Ð²Ð°Ð¹Ñе подивимоÑÑ Ð½Ð° Ñимволи з кодами 65..220 (лаÑинÑÑкий алÑавÑÑ Ñ ÑÑоÑ
и бÑлÑÑе), ÑÑвоÑивÑи з ниÑ
ÑÑдок:
let str = '';
for (let i = 65; i <= 220; i++) {
str += String.fromCodePoint(i);
}
alert( str );
// alert виведе:
// ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÂÂÂÂÂ
// ¡¢£¤¥¦§¨©ª«¬Â®¯°±²³´µ¶·¸¹º»¼½¾¿ÃÃÃÃÃÃ
ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ
ÐаÑиÑе? СпоÑаÑÐºÑ Ð²Ð¸Ð²Ð¾Ð´ÑÑÑÑÑ Ð²ÐµÐ»Ð¸ÐºÑ Ñимволи, поÑÑм кÑлÑка ÑпеÑÑалÑниÑ
, поÑÑм Ñимволи нижнÑого ÑегÑÑÑÑÑ Ñа à ближÑе до кÑнÑÑ Ð²Ð¸Ð²Ð¾Ð´Ñ.
Ð¢ÐµÐ¿ÐµÑ ÑÑÐ°Ñ Ð¾Ñевидним, ÑÐ¾Ð¼Ñ a > Z.
Символи поÑÑвнÑÑÑÑÑÑ Ð·Ð° ÑÑ
ÑиÑловим кодом. ÐÑлÑÑий код ознаÑаÑ, Ñо Ñимвол бÑлÑÑе. Ðод Ð´Ð»Ñ a (97) бÑлÑÑий за код Ð´Ð»Ñ Z (90).
- УÑÑ Ð¼Ð°Ð»Ñ Ð»ÑÑеÑи йдÑÑÑ Ð¿ÑÑÐ»Ñ Ð²ÐµÐ»Ð¸ÐºÐ¸Ñ , оÑкÑлÑки ÑÑ Ð½Ñ ÐºÐ¾Ð´Ð¸ бÑлÑÑÑ.
- ÐеÑÐºÑ Ð»ÑÑеÑи, Ñк-оÑ
Ã, ÑÑоÑÑÑ Ð¾ÐºÑемо вÑд оÑновного алÑавÑÑÑ. ТÑÑ Ð¹Ð¾Ð³Ð¾ код бÑлÑÑий за бÑдÑ-Ñо вÑдaдоz.
ÐÑавилÑне поÑÑвнÑннÑ
«ÐÑавилÑний» алгоÑиÑм поÑÑвнÑÐ½Ð½Ñ ÑÑдкÑв Ñ ÑкладнÑÑим, нÑж може здаÑиÑÑ, ÑÐ¾Ð¼Ñ Ñо Ð´Ð»Ñ ÑÑÐ·Ð½Ð¸Ñ Ð¼Ð¾Ð² â ÑÑÐ·Ð½Ñ Ð°Ð»ÑавÑÑи.
ÐÑже, бÑаÑзеÑÑ Ð¿Ð¾ÑÑÑбно знаÑи алÑавÑÑ ÑÐºÐ¾Ñ Ð¼Ð¾Ð²Ð¸ викоÑиÑÑовÑваÑи Ð´Ð»Ñ Ð¿Ð¾ÑÑвнÑннÑ.
Ðа ÑаÑÑÑ, ÑÑÑ ÑÑÑаÑÐ½Ñ Ð±ÑаÑзеÑи пÑдÑÑимÑÑÑÑ ÑÑандаÑÑ ÑнÑеÑнаÑÑоналÑзаÑÑÑ ECMA-402.
ÐÑн забезпеÑÑÑ ÑпеÑÑалÑний меÑод Ð´Ð»Ñ Ð¿Ð¾ÑÑвнÑÐ½Ð½Ñ ÑÑдкÑв з ÑÑÐ·Ð½Ð¸Ñ Ð¼Ð¾Ð², доÑÑимÑÑÑиÑÑ ÑÑ Ð½ÑÑ Ð¿Ñавил.
Ðиклик str.localeCompare(str2) повеÑÑÐ°Ñ ÑÑле ÑиÑло, Ñке вказÑÑ, Ñи Ñ str менÑим, ÑÑвним Ñи бÑлÑÑим за str2 вÑдповÑдно до пÑавил мови:
- ÐовеÑÑÐ°Ñ Ð²ÑдʼÑмне ÑиÑло, ÑкÑо
strменÑе, нÑжstr2. - ÐовеÑÑÐ°Ñ Ð´Ð¾Ð´Ð°Ñне ÑиÑло, ÑкÑо
strбÑлÑÑе, нÑжstr2. - ÐовеÑÑаÑ
0, ÑкÑо вони ÑÑвнÑ.
ÐапÑиклад:
alert( 'Ãsterreich'.localeCompare('Zealand') ); // -1
Цей меÑод наÑпÑÐ°Ð²Ð´Ñ Ð¼Ð°Ñ Ð´Ð²Ð° додаÑÐºÐ¾Ð²Ñ Ð°ÑгÑменÑи, зазнаÑÐµÐ½Ñ Ð² докÑменÑаÑÑÑ, Ñо дозволÑÑ Ñвно вказаÑи Ð¹Ð¾Ð¼Ñ Ð¼Ð¾Ð²Ñ (ÑÐºÑ Ð²Ñн Ñипово визнаÑÐ°Ñ Ð¾Ð¿Ð¸ÑаÑÑиÑÑ Ð½Ð° ÑеÑедовиÑе. РвÑд Ñого залежиÑÑ Ð¿Ð¾ÑÑдок бÑкв), Ñ Ð²ÑÑановиÑи додаÑÐºÐ¾Ð²Ñ Ð¿Ñавила, Ñк-Ð¾Ñ ÑÑÑливÑÑÑÑ Ð´Ð¾ ÑегÑÑÑÑÑ Ð°Ð±Ð¾ Ñи ÑлÑд ÑозглÑдаÑи ÑÑзниÑÑ Ð¼Ñж "a" Ñа "aÌ".
ÐÑдÑÑмки
- Ð 3 види лапок. ÐвоÑоÑÐ½Ñ Ð»Ð°Ð¿ÐºÐ¸ дозволÑÑÑÑ ÑÑÐ´ÐºÑ Ð¾Ñ
оплÑваÑи кÑлÑка лÑнÑй Ñ Ð·Ð°ÑÑоÑовÑваÑи вбÑдовÑÐ²Ð°Ð½Ñ Ð²Ð¸Ñази
${â¦}. - Ðи можемо викоÑиÑÑовÑваÑи ÑпеÑÑалÑÐ½Ñ Ñимволи, ÑÐ°ÐºÑ Ñк ÑозÑив ÑÑдка
\n. - Щоб оÑÑимаÑи Ñимвол, викоÑиÑÑовÑйÑе:
[]або меÑодat. - Щоб оÑÑимаÑи пÑдÑÑдок, викоÑиÑÑовÑйÑе:
sliceабоsubstring. - Щоб пеÑевеÑÑи ÑÑдок Ñ Ð½Ð¸Ð¶Ð½Ñй/веÑÑ
нÑй ÑегÑÑÑÑи, викоÑиÑÑовÑйÑе:
toLowerCase/toUpperCase. - Щоб знайÑи пÑдÑÑдок, викоÑиÑÑовÑйÑе:
indexOf, абоincludes/startsWith/endsWithÐ´Ð»Ñ Ð¿ÑоÑÑÐ¸Ñ Ð¿ÐµÑевÑÑок. - Щоб поÑÑвнÑÑи ÑÑдки з ÑÑаÑ
ÑваннÑм пÑавил мови, викоÑиÑÑовÑйÑе
localeCompare, ÑнакÑе ÑÑдки поÑÑвнÑÑÑÑÑÑ Ð·Ð° кодами ÑимволÑв.
РкÑлÑка ÑнÑÐ¸Ñ ÐºÐ¾ÑиÑÐ½Ð¸Ñ Ð¼ÐµÑодÑв Ñ ÑÑÐ´ÐºÐ°Ñ :
str.trim()â видалÑÑ (âобÑÑзаÑâ) пÑобÑли з поÑаÑÐºÑ Ñа кÑнÑÑ ÑÑдка.str.repeat(n)â повÑоÑÑÑ ÑÑдокnÑазÑв.- â¦Ñа багаÑо ÑнÑого можна знайÑи в поÑÑбникÑ.
Ð Ñдки Ñакож маÑÑÑ Ð¼ÐµÑоди поÑÑкÑ/замÑни ÑегÑлÑÑними виÑазами. Ðле Ñе велика Ñема, ÑÐ¾Ð¼Ñ Ð¿Ð¾ÑÑнÑÑÑÑÑÑ Ð² окÑÐµÐ¼Ð¾Ð¼Ñ ÑоздÑÐ»Ñ Ð ÐµÐ³ÑлÑÑÐ½Ñ Ð²Ð¸Ñази.
ÐÑÑм Ñого, на даний Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ð°Ð¶Ð»Ð¸Ð²Ð¾ знаÑи, Ñо ÑÑдки базÑÑÑÑÑÑ Ð½Ð° кодÑÐ²Ð°Ð½Ð½Ñ Unicode, Ñ ÑÐ¾Ð¼Ñ Ð²Ð¸Ð½Ð¸ÐºÐ°ÑÑÑ Ð¿Ñоблеми з поÑÑвнÑннÑм, ÑÐºÑ Ð¼Ð¸ опиÑали виÑе. ÐÑлÑÑе пÑо Unicode Ñ ÑоздÑÐ»Ñ Ð®Ð½Ñкод, внÑÑÑÑÑÐ½Ñ Ð±Ñдова ÑÑдкÑв.
ÐоменÑаÑÑ
<code>, Ð´Ð»Ñ ÐºÑлÑÐºÐ¾Ñ ÑÑдкÑв â обгоÑнÑÑÑ ÑÑ Ñегом<pre>, Ð´Ð»Ñ Ð¿Ð¾Ð½Ð°Ð´ 10 ÑÑдкÑв â викоÑиÑÑовÑйÑе пÑÑоÑниÑÑ (plnkr, jsbin, codepenâ¦)