Ð JavaScript лÑбÑе ÑекÑÑовÑе даннÑе ÑвлÑÑÑÑÑ ÑÑÑоками. Ðе ÑÑÑеÑÑвÑÐµÑ Ð¾ÑделÑного Ñипа «Ñимвол», коÑоÑÑй еÑÑÑ Ð² ÑÑде дÑÑÐ³Ð¸Ñ ÑзÑков.
ÐнÑÑÑенний ÑоÑÐ¼Ð°Ñ Ð´Ð»Ñ ÑÑÑок â вÑегда UTF-16, вне завиÑимоÑÑи Ð¾Ñ ÐºÐ¾Ð´Ð¸Ñовки ÑÑÑаниÑÑ.
ÐавÑÑки
Ð JavaScript еÑÑÑ ÑазнÑе ÑÐ¸Ð¿Ñ ÐºÐ°Ð²ÑÑек.
СÑÑÐ¾ÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ ÑоздаÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÑнÑÑ , двойнÑÑ Ð»Ð¸Ð±Ð¾ обÑаÑнÑÑ ÐºÐ°Ð²ÑÑек:
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 полÑÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ Ð¸ вÑÑÑоеннÑе в Ð½ÐµÑ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸ Ð¼Ð¾Ð¶ÐµÑ Ð¸Ñ
обÑабоÑаÑÑ. ÐодÑобнее об ÑÑом можно пÑоÑиÑаÑÑ Ð² докÑменÑаÑии. ÐÑли пеÑед ÑÑÑокой еÑÑÑ Ð²ÑÑажение, Ñо ÑÐ°Ð±Ð»Ð¾Ð½Ð½Ð°Ñ ÑÑÑока назÑваеÑÑÑ Â«ÑеговÑм Ñаблоном». ÐÑо позволÑÐµÑ Ð¸ÑполÑзоваÑÑ ÑÐ²Ð¾Ñ ÑаблонизаÑÐ¸Ñ Ð´Ð»Ñ ÑÑÑок, но на пÑакÑике ÑеговÑе ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ð¿ÑименÑÑÑÑÑ Ñедко.
СпеÑÑимволÑ
ÐногоÑÑÑоÑнÑе ÑÑÑоки Ñакже можно ÑоздаваÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÑнÑÑ
и двойнÑÑ
кавÑÑек, иÑполÑзÑÑ Ñак назÑваемÑй «Ñимвол пеÑевода ÑÑÑоки», коÑоÑÑй запиÑÑваеÑÑÑ ÐºÐ°Ðº \n:
let guestList = "Guests:\n * John\n * Pete\n * Mary";
alert(guestList); // ÑпиÑок гоÑÑей, ÑоÑÑоÑÑий из неÑколÑкиÑ
ÑÑÑок
Ð ÑаÑÑноÑÑи, ÑÑи две ÑÑÑоки ÑквиваленÑнÑ, пÑоÑÑо запиÑÐ°Ð½Ñ Ð¿Ð¾-ÑазномÑ:
// пеÑевод ÑÑÑоки добавлен Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ñимвола пеÑевода ÑÑÑоки
let str1 = "Hello\nWorld";
// многоÑÑÑоÑÐ½Ð°Ñ ÑÑÑока, ÑÐ¾Ð·Ð´Ð°Ð½Ð½Ð°Ñ Ñ Ð¸ÑполÑзованием обÑаÑнÑÑ
кавÑÑек
let str2 = `Hello
World`;
alert(str1 == str2); // true
ÐÑÑÑ Ð¸ дÑÑгие, Ñеже иÑполÑзÑемÑе ÑпеÑÑимволÑ. ÐÐ¾Ñ ÑпиÑок:
| Символ | ÐпиÑание |
|---|---|
\n |
ÐеÑевод ÑÑÑоки |
\r |
Ð ÑекÑÑовÑÑ
ÑайлаÑ
Windows Ð´Ð»Ñ Ð¿ÐµÑевода ÑÑÑоки иÑполÑзÑеÑÑÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑÐ¸Ñ Ñимволов \r\n, а на дÑÑгиÑ
ÐС ÑÑо пÑоÑÑо \n. ÐÑо Ñак по иÑÑоÑиÑеÑким пÑиÑинам, ÐРпод Windows обÑÑно Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÐµÑ Ð¸ пÑоÑÑо \n. |
\', \", \` |
ÐавÑÑки |
\\ |
ÐбÑаÑнÑй ÑÐ»ÐµÑ |
\t |
Ðнак ÑабÑлÑÑии |
\b, \f, \v |
Backspace, Form Feed и Vertical Tab â оÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð´Ð»Ñ Ð¾Ð±ÑаÑной ÑовмеÑÑимоÑÑи, ÑейÑÐ°Ñ Ð½Ðµ иÑполÑзÑÑÑÑÑ. |
Ðак Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе видеÑÑ, вÑе ÑпеÑÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð½Ð°ÑинаÑÑÑÑ Ñ Ð¾Ð±ÑаÑного ÑлеÑа, \ â Ñак назÑваемого «Ñимвола ÑкÑаниÑованиÑ».
Ðн Ñакже иÑполÑзÑеÑÑÑ, еÑли Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ вÑÑавиÑÑ Ð² ÑÑÑÐ¾ÐºÑ ÐºÐ°Ð²ÑÑкÑ.
РпÑимеÑÑ:
alert( 'I\'m the Walrus!' ); // I'm the Walrus!
ÐдеÑÑ Ð¿ÐµÑед вÑ
одÑÑей в ÑÑÑÐ¾ÐºÑ ÐºÐ°Ð²ÑÑкой необÑ
одимо добавиÑÑ Ð¾Ð±ÑаÑнÑй ÑÐ»ÐµÑ â \' â инаÑе она Ð±Ñ Ð¾Ð±Ð¾Ð·Ð½Ð°Ñала оконÑание ÑÑÑоки.
РазÑмееÑÑÑ, ÑÑебование ÑкÑаниÑоваÑÑ Ð¾ÑноÑиÑÑÑ ÑолÑко к Ñаким же кавÑÑкам, как Ñе, в коÑоÑÑе заклÑÑена ÑÑÑока. Так ÑÑо Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ пÑимениÑÑ Ð¸ более ÑлеганÑное ÑеÑение, иÑполÑзовав Ð´Ð»Ñ ÑÑой ÑÑÑоки двойнÑе или обÑаÑнÑе кавÑÑки:
alert( `I'm the Walrus!` ); // I'm the Walrus!
ÐамеÑим, ÑÑо обÑаÑнÑй ÑÐ»ÐµÑ \ ÑлÑÐ¶Ð¸Ñ Ð»Ð¸ÑÑ Ð´Ð»Ñ ÐºÐ¾ÑÑекÑного пÑоÑÑÐµÐ½Ð¸Ñ ÑÑÑоки инÑеÑпÑеÑаÑоÑом, но он не запиÑÑваеÑÑÑ Ð² ÑÑÑÐ¾ÐºÑ Ð¿Ð¾Ñле ÐµÑ Ð¿ÑоÑÑениÑ. Ðогда ÑÑÑока ÑоÑ
ÑанÑеÑÑÑ Ð² опеÑаÑивнÑÑ Ð¿Ð°Ð¼ÑÑÑ, в Ð½ÐµÑ Ð½Ðµ добавлÑеÑÑÑ Ñимвол \. ÐÑ Ð¼Ð¾Ð¶ÐµÑе Ñвно видеÑÑ ÑÑо в вÑводаÑ
alert в пÑимеÑаÑ
вÑÑе.
Ðо ÑÑо, еÑли нам надо добавиÑÑ Ð² ÑÑÑÐ¾ÐºÑ ÑобÑÑвенно Ñам обÑаÑнÑй ÑÐ»ÐµÑ \?
ÐÑо можно ÑделаÑÑ, добавив пеÑед ним⦠еÑÑ Ð¾Ð´Ð¸Ð½ обÑаÑнÑй ÑлеÑ!
alert( `The backslash: \\` ); // The backslash: \
Ðлина ÑÑÑоки
СвойÑÑво length ÑодеÑÐ¶Ð¸Ñ Ð´Ð»Ð¸Ð½Ñ ÑÑÑоки:
alert( `My\n`.length ); // 3
ÐбÑаÑиÑе внимание, \n â ÑÑо один ÑпеÑÑимвол, поÑÑÐ¾Ð¼Ñ ÑÑÑ Ð²ÑÑ Ð¿ÑавилÑно: длина ÑÑÑоки 3.
length â ÑÑо ÑвойÑÑвоÐÑÐ²Ð°ÐµÑ Ñак, ÑÑо лÑди Ñ Ð¿ÑакÑикой в дÑÑгиÑ
ÑзÑкаÑ
ÑлÑÑайно пÑÑаÑÑÑÑ Ð²ÑзваÑÑ ÐµÐ³Ð¾, добавлÑÑ ÐºÑÑглÑе Ñкобки: они пиÑÑÑ str.length() вмеÑÑо str.length. ÐÑо не ÑабоÑаеÑ.
Так как str.length â ÑÑо ÑиÑловое ÑвойÑÑво, а не ÑÑнкÑиÑ, добавлÑÑÑ Ñкобки не нÑжно.
ÐоÑÑÑп к Ñимволам
ÐолÑÑиÑÑ Ñимвол, коÑоÑÑй Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð¿Ð¾Ð·Ð¸ÑÐ¸Ñ pos, можно Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ²Ð°Ð´ÑаÑнÑÑ
Ñкобок: [pos]. Также можно иÑполÑзоваÑÑ Ð¼ÐµÑод str.at(pos). ÐеÑвÑй Ñимвол Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð½ÑлевÑÑ Ð¿Ð¾Ð·Ð¸ÑиÑ:
let str = `Hello`;
// полÑÑаем пеÑвÑй Ñимвол
alert( str[0] ); // H
alert( str.at(0) ); // H
// полÑÑаем поÑледний Ñимвол
alert( str[str.length - 1] ); // o
alert( str.at(-1) ); // o
Ðак Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе видеÑÑ, пÑеимÑÑеÑÑво меÑода .at(pos) заклÑÑаеÑÑÑ Ð² Ñом, ÑÑо он допÑÑÐºÐ°ÐµÑ Ð¾ÑÑиÑаÑелÑнÑÑ Ð¿Ð¾Ð·Ð¸ÑиÑ. ÐÑли pos â оÑÑиÑаÑелÑное ÑиÑло, Ñо оÑÑÑÐµÑ Ð²ÐµÐ´ÐµÑÑÑ Ð¾Ñ ÐºÐ¾Ð½Ñа ÑÑÑоки.
Таким обÑазом, .at(-1) ознаÑÐ°ÐµÑ Ð¿Ð¾Ñледний Ñимвол, а .at(-2) â ÑоÑ, ÑÑо пеÑед ним, и Ñ.д.
ÐвадÑаÑнÑе Ñкобки вÑегда возвÑаÑаÑÑ undefined Ð´Ð»Ñ Ð¾ÑÑиÑаÑелÑнÑÑ
индекÑов. ÐапÑимеÑ:
let str = `Hello`;
alert( str[-2] ); // undefined
alert( str.at(-2) ); // l
Также можно пеÑебÑаÑÑ ÑÑÑÐ¾ÐºÑ Ð¿Ð¾ÑимволÑно, иÑполÑзÑÑ for..of:
for (let char of "Hello") {
alert(char); // H,e,l,l,o (char â ÑнаÑала "H", поÑом "e", поÑом "l" и Ñ.д.)
}
СÑÑоки неизменÑемÑ
СодеÑжимое ÑÑÑоки в JavaScript нелÑÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ. ÐелÑÐ·Ñ Ð²Ð·ÑÑÑ Ñимвол поÑеÑедине и замениÑÑ ÐµÐ³Ð¾. Ðак ÑолÑко ÑÑÑока Ñоздана â она ÑÐ°ÐºÐ°Ñ Ð½Ð°Ð²Ñегда.
ÐавайÑе попÑобÑем Ñак ÑделаÑÑ, и ÑбедимÑÑ, ÑÑо ÑÑо не ÑабоÑаеÑ:
let str = 'Hi';
str[0] = 'h'; // оÑибка
alert( str[0] ); // не ÑабоÑаеÑ
Ðожно ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ ÑÑÑÐ¾ÐºÑ Ð¸ запиÑаÑÑ ÐµÑ Ð² ÑÑ Ð¶Ðµ ÑамÑÑ Ð¿ÐµÑеменнÑÑ Ð²Ð¼ÐµÑÑо ÑÑаÑой.
ÐапÑимеÑ:
let str = 'Hi';
str = 'h' + str[1]; // заменÑем ÑÑÑокÑ
alert( str ); // hi
РпоÑледÑÑÑÐ¸Ñ ÑÐ°Ð·Ð´ÐµÐ»Ð°Ñ Ð¼Ñ Ñвидим болÑÑе пÑимеÑов.
Ðзменение ÑегиÑÑÑа
ÐеÑÐ¾Ð´Ñ toLowerCase() и toUpperCase() менÑÑÑ ÑегиÑÑÑ Ñимволов:
alert( 'Interface'.toUpperCase() ); // INTERFACE
alert( 'Interface'.toLowerCase() ); // interface
ÐÑли Ð¼Ñ Ð·Ð°Ñ Ð¾Ñим пеÑевеÑÑи в нижний ÑегиÑÑÑ ÐºÐ°ÐºÐ¾Ð¹-Ñо конкÑеÑнÑй Ñимвол:
alert( 'Interface'[0].toLowerCase() ); // 'i'
ÐоиÑк подÑÑÑоки
СÑÑеÑÑвÑÐµÑ Ð½ÐµÑколÑко ÑпоÑобов поиÑка подÑÑÑоки.
str.indexOf
ÐеÑвÑй меÑод â str.indexOf(substr, pos).
Ðн иÑÐµÑ Ð¿Ð¾Ð´ÑÑÑÐ¾ÐºÑ substr в ÑÑÑоке str, наÑÐ¸Ð½Ð°Ñ Ñ Ð¿Ð¾Ð·Ð¸Ñии 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 with id)
ÐеобÑзаÑелÑнÑй вÑоÑой аÑгÑÐ¼ÐµÐ½Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ Ð½Ð°ÑаÑÑ Ð¿Ð¾Ð¸Ñк Ñ Ð¾Ð¿ÑеделÑнной позиÑии.
ÐапÑимеÑ, пеÑвое вÑ
ождение "id" â на позиÑии 1. ÐÐ»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð½Ð°Ð¹Ñи ÑледÑÑÑее, наÑнÑм поиÑк Ñ Ð¿Ð¾Ð·Ð¸Ñии 2:
let str = 'Widget with id';
alert( str.indexOf('id', 2) ) // 12
ЧÑÐ¾Ð±Ñ Ð½Ð°Ð¹Ñи вÑе вÑ
Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ÑÑÑоки, нÑжно запÑÑÑиÑÑ 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 еÑÑÑ Ð½ÐµÐ±Ð¾Ð»ÑÑое неÑдобÑÑво. Такое ÑÑловие не бÑÐ´ÐµÑ ÑабоÑаÑÑ:
let str = "Widget with id";
if (str.indexOf("Widget")) {
alert("Совпадение еÑÑÑ"); // не ÑабоÑаеÑ
}
ÐÑ Ð¸Ñем подÑÑÑÐ¾ÐºÑ "Widget", и она здеÑÑ ÐµÑÑÑ, пÑÑмо на позиÑии 0. Ðо alert не показÑваеÑÑÑ, Ñ. к. str.indexOf("Widget") возвÑаÑÐ°ÐµÑ 0, и if ÑеÑаеÑ, ÑÑо ÑеÑÑ Ð½Ðµ пÑойден.
ÐоÑÑÐ¾Ð¼Ñ Ð½Ð°Ð´Ð¾ делаÑÑ Ð¿ÑовеÑÐºÑ Ð½Ð° -1:
let str = "Widget with id";
if (str.indexOf("Widget") != -1) {
alert("Совпадение еÑÑÑ"); // ÑепеÑÑ ÑабоÑаеÑ
}
ТÑÑк Ñ Ð¿Ð¾Ð±Ð¸ÑовÑм ÐÐ
СÑÑеÑÑвÑÐµÑ ÑÑаÑÑй ÑÑÑк Ñ Ð¸ÑполÑзованием побиÑового опеÑаÑоÑа ÐÐ â ~. Ðн пÑеобÑазÑÐµÑ ÑиÑло в 32-ÑазÑÑдное Ñелое Ñо знаком (signed 32-bit integer). ÐÑÐ¾Ð±Ð½Ð°Ñ ÑаÑÑÑ, в ÑлÑÑае, еÑли она пÑиÑÑÑÑÑвÑеÑ, оÑбÑаÑÑваеÑÑÑ. ÐаÑем вÑе биÑÑ ÑиÑла инвеÑÑиÑÑÑÑÑÑ.
Ðа пÑакÑике ÑÑо ознаÑÐ°ÐµÑ Ð¿ÑоÑÑÑÑ Ð²ÐµÑÑ: Ð´Ð»Ñ 32-ÑазÑÑднÑÑ
ÑелÑÑ
ÑиÑел знаÑение ~n Ñавно -(n+1).
Ð ÑаÑÑноÑÑи:
alert( ~2 ); // -3, Ñо же, ÑÑо -(2+1)
alert( ~1 ); // -2, Ñо же, ÑÑо -(1+1)
alert( ~0 ); // -1, Ñо же, ÑÑо -(0+1)
alert( ~-1 ); // 0, Ñо же, ÑÑо -(-1+1)
Таким обÑазом, ~n ÑавнÑеÑÑÑ 0 ÑолÑко пÑи n == -1 (Ð´Ð»Ñ Ð»Ñбого n, вÑ
одÑÑего в 32-ÑазÑÑднÑе ÑелÑе ÑиÑла Ñо знаком).
СооÑвеÑÑÑвенно, пÑоÑ
ождение пÑовеÑки if ( ~str.indexOf("â¦") ) ознаÑаеÑ, ÑÑо ÑезÑлÑÑÐ°Ñ indexOf оÑлиÑен Ð¾Ñ -1, Ñовпадение еÑÑÑ.
ÐÑо иногда пÑименÑÑÑ, ÑÑÐ¾Ð±Ñ ÑделаÑÑ Ð¿ÑовеÑÐºÑ indexOf компакÑнее:
let str = "Widget";
if (~str.indexOf("Widget")) {
alert( 'Совпадение еÑÑÑ' ); // ÑабоÑаеÑ
}
ÐбÑÑно иÑполÑзоваÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑи ÑзÑка каким-либо неоÑевиднÑм обÑазом не ÑекомендÑеÑÑÑ, но ÑÑÐ¾Ñ ÑÑÑк ÑиÑоко иÑполÑзÑеÑÑÑ Ð² ÑÑаÑом коде, поÑÑÐ¾Ð¼Ñ ÐµÐ³Ð¾ важно понимаÑÑ.
ÐÑоÑÑо запомниÑе: if (~str.indexOf(â¦)) ознаÑÐ°ÐµÑ Â«ÐµÑли найдено».
ÐпÑоÑем, еÑли бÑÑÑ ÑоÑнее, из-за Ñого, ÑÑо болÑÑие ÑиÑла обÑезаÑÑÑÑ Ð´Ð¾ 32 биÑов опеÑаÑоÑом ~, ÑÑÑеÑÑвÑÑÑ Ð´ÑÑгие ÑиÑла, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ
ÑезÑлÑÑÐ°Ñ Ñоже бÑÐ´ÐµÑ 0, Ñамое маленÑкое из коÑоÑÑÑ
â ~4294967295=0. ÐоÑÑÐ¾Ð¼Ñ ÑÐ°ÐºÐ°Ñ Ð¿ÑовеÑка бÑÐ´ÐµÑ Ð¿ÑавилÑно ÑабоÑаÑÑ ÑолÑко Ð´Ð»Ñ ÑÑÑок менÑÑей длинÑ.
Ðа даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ñакой ÑÑÑк можно вÑÑÑеÑиÑÑ ÑолÑко в ÑÑаÑом коде, поÑÐ¾Ð¼Ñ ÑÑо в новом он пÑоÑÑо не нÑжен: еÑÑÑ Ð¼ÐµÑод .includes (Ñм. ниже).
includes, startsWith, endsWith
Ðолее ÑовÑеменнÑй меÑод str.includes(substr, pos) возвÑаÑÐ°ÐµÑ true, еÑли в ÑÑÑоке str еÑÑÑ Ð¿Ð¾Ð´ÑÑÑока substr, либо false, еÑли неÑ.
ÐÑо â пÑавилÑнÑй вÑбоÑ, еÑли нам Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ пÑовеÑиÑÑ, еÑÑÑ Ð»Ð¸ Ñовпадение, но позиÑÐ¸Ñ Ð½Ðµ нÑжна:
alert( "Widget with id".includes("Widget") ); // true
alert( "Hello".includes("Bye") ); // false
ÐеобÑзаÑелÑнÑй вÑоÑой аÑгÑÐ¼ÐµÐ½Ñ str.includes позволÑÐµÑ Ð½Ð°ÑаÑÑ Ð¿Ð¾Ð¸Ñк Ñ Ð¾Ð¿ÑеделÑнной позиÑии:
alert( "Midget".includes("id") ); // true
alert( "Midget".includes("id", 3) ); // false, поиÑк наÑÐ°Ñ Ñ Ð¿Ð¾Ð·Ð¸Ñии 3
ÐеÑÐ¾Ð´Ñ str.startsWith и str.endsWith пÑовеÑÑÑÑ, ÑооÑвеÑÑÑвенно, наÑинаеÑÑÑ Ð»Ð¸ и заканÑиваеÑÑÑ Ð»Ð¸ ÑÑÑока опÑеделÑнной ÑÑÑокой:
alert( "Widget".startsWith("Wid") ); // true, "Wid" â наÑало "Widget"
alert( "Widget".endsWith("get") ); // true, "get" â оконÑание "Widget"
ÐолÑÑение подÑÑÑоки
Ð JavaScript еÑÑÑ 3 меÑода Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ÑÑÑоки: substring, substr и slice.
str.slice(start [, end])-
ÐозвÑаÑÐ°ÐµÑ ÑаÑÑÑ ÑÑÑоки оÑ
startдо (не вклÑÑаÑ)end.ÐапÑимеÑ:
let str = "stringify"; // 'strin', ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¾Ñ 0 до 5 (не вклÑÑÐ°Ñ 5) alert( str.slice(0, 5) ); // 's', Ð¾Ñ 0 до 1, не вклÑÑÐ°Ñ 1, Ñ. е. ÑолÑко один Ñимвол на позиÑии 0 alert( str.slice(0, 1) );ÐÑли аÑгÑменÑ
endоÑÑÑÑÑÑвÑеÑ,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, но можно задаваÑÑstartболÑÑеend.
ÐÑлиstartболÑÑеend, Ñо меÑодsubstringÑÑабоÑÐ°ÐµÑ Ñак, как еÑли Ð±Ñ Ð°ÑгÑменÑÑ Ð±Ñли поменÑÐ½Ñ Ð¼ÐµÑÑами.ÐапÑимеÑ:
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) ); // "" (пÑÑÑÐ°Ñ ÑÑÑока)ÐÑÑиÑаÑелÑнÑе знаÑениÑ
substring, в оÑлиÑие оÑslice, не поддеÑживаеÑ, они инÑеÑпÑеÑиÑÑÑÑÑÑ ÐºÐ°Ðº0. str.substr(start [, length])-
ÐозвÑаÑÐ°ÐµÑ ÑаÑÑÑ ÑÑÑоки оÑ
startдлинÑlength.РпÑоÑивоположноÑÑÑ Ð¿ÑедÑдÑÑим меÑодам, ÑÑÐ¾Ñ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ ÑказаÑÑ Ð´Ð»Ð¸Ð½Ñ Ð²Ð¼ÐµÑÑо конеÑной позиÑии:
let str = "stringify"; // ring, полÑÑаем 4 Ñимвола, наÑÐ¸Ð½Ð°Ñ Ñ Ð¿Ð¾Ð·Ð¸Ñии 2 alert( str.substr(2, 4) );ÐнаÑение пеÑвого аÑгÑменÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾ÑÑиÑаÑелÑнÑм, Ñогда позиÑÐ¸Ñ Ð¾Ð¿ÑеделÑеÑÑÑ Ñ ÐºÐ¾Ð½Ñа:
let str = "stringify"; // gi, полÑÑаем 2 Ñимвола, наÑÐ¸Ð½Ð°Ñ Ñ Ð¿Ð¾Ð·Ð¸Ñии 4 Ñ ÐºÐ¾Ð½Ñа ÑÑÑоки alert( str.substr(-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 более гибок, он поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¾ÑÑиÑаÑелÑнÑе аÑгÑменÑÑ, и его коÑоÑе пиÑаÑÑ. Так ÑÑо, в пÑинÑипе, можно запомниÑÑ ÑолÑко его.
СÑавнение ÑÑÑок
Ðак Ð¼Ñ Ð·Ð½Ð°ÐµÐ¼ из Ð³Ð»Ð°Ð²Ñ ÐпеÑаÑоÑÑ ÑÑавнениÑ, ÑÑÑоки ÑÑавниваÑÑÑÑ Ð¿Ð¾ÑимволÑно в алÑавиÑном поÑÑдке.
Тем не менее, еÑÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе нÑанÑÑ.
-
СÑÑоÑнÑе бÑÐºÐ²Ñ Ð±Ð¾Ð»ÑÑе заглавнÑÑ :
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 String.fromCodePoint(code)-
СоздаÑÑ Ñимвол по его кодÑ
codealert( String.fromCodePoint(90) ); // 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. - ÐоложиÑелÑное ÑиÑло, еÑли
strболÑÑеstr2. 0, еÑли ÑÑÑоки ÑавнÑ.
ÐапÑимеÑ:
alert( 'Ãsterreich'.localeCompare('Zealand') ); // -1
У ÑÑого меÑода еÑÑÑ Ð´Ð²Ð° дополниÑелÑнÑÑ
аÑгÑменÑа, коÑоÑÑе ÑÐºÐ°Ð·Ð°Ð½Ñ Ð² докÑменÑаÑии. ÐеÑвÑй позволÑÐµÑ ÑказаÑÑ ÑзÑк (по ÑмолÑÐ°Ð½Ð¸Ñ Ð±ÐµÑÑÑÑÑ Ð¸Ð· окÑÑжениÑ) â Ð¾Ñ Ð½ÐµÐ³Ð¾ завиÑÐ¸Ñ Ð¿Ð¾ÑÑдок бÑкв. ÐÑоÑой â опÑеделиÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе пÑавила, Ñакие как ÑÑвÑÑвиÑелÑноÑÑÑ Ðº ÑегиÑÑÑÑ, а Ñакже ÑледÑÐµÑ Ð»Ð¸ ÑÑиÑÑваÑÑ ÑазлиÑÐ¸Ñ Ð¼ÐµÐ¶Ð´Ñ "a" и "aÌ".
ÐÑого
- ÐÑÑÑ ÑÑи Ñипа кавÑÑек. СÑÑоки, иÑполÑзÑÑÑие обÑаÑнÑе кавÑÑки, могÑÑ Ð·Ð°Ð½Ð¸Ð¼Ð°ÑÑ Ð±Ð¾Ð»ÐµÐµ одной ÑÑÑоки в коде и вклÑÑаÑÑ Ð²ÑÑажениÑ
${â¦}. - СÑÑоки в JavaScript кодиÑÑÑÑÑÑ Ð² UTF-16.
- ÐÑÑÑ ÑпеÑиалÑнÑе ÑимволÑ, Ñакие как ÑазÑÑв ÑÑÑоки
\n. - ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ñимвола иÑполÑзÑйÑе
[]или меÑодat. - ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ÑÑÑоки иÑполÑзÑйÑе
sliceилиsubstring. - ÐÐ»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð¿ÐµÑевеÑÑи ÑÑÑÐ¾ÐºÑ Ð² нижний или веÑÑ
ний ÑегиÑÑÑ, иÑполÑзÑйÑе
toLowerCase/toUpperCase. - ÐÐ»Ñ Ð¿Ð¾Ð¸Ñка подÑÑÑоки иÑполÑзÑйÑе
indexOfилиincludes/startsWith/endsWith, когда надо ÑолÑко пÑовеÑиÑÑ, еÑÑÑ Ð»Ð¸ Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ. - ЧÑÐ¾Ð±Ñ ÑÑавниÑÑ ÑÑÑоки Ñ ÑÑÑÑом пÑавил ÑзÑка, иÑполÑзÑйÑе
localeCompare.
СÑÑоки Ñакже имеÑÑ ÐµÑÑ ÐºÐ¾Ðµ-какие полезнÑе меÑодÑ:
str.trim()â ÑбиÑÐ°ÐµÑ Ð¿ÑÐ¾Ð±ÐµÐ»Ñ Ð² наÑале и конÑе ÑÑÑоки.str.repeat(n)â повÑоÑÑÐµÑ ÑÑÑокÑnÑаз.- â¦Ð¸ дÑÑгие, коÑоÑÑе Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе найÑи в ÑпÑавоÑнике.
ÐÐ»Ñ ÑÑÑок пÑедÑÑмоÑÑÐµÐ½Ñ Ð¼ÐµÑÐ¾Ð´Ñ Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка и Ð·Ð°Ð¼ÐµÐ½Ñ Ñ Ð¸ÑполÑзованием ÑегÑлÑÑнÑÑ Ð²ÑÑажений. Ðо ÑÑо оÑделÑÐ½Ð°Ñ Ð±Ð¾Ð»ÑÑÐ°Ñ Ñема, поÑÑÐ¾Ð¼Ñ ÐµÐ¹ поÑвÑÑена оÑделÑÐ½Ð°Ñ Ð³Ð»Ð°Ð²Ð° ÑÑебника РегÑлÑÑнÑе вÑÑажениÑ.
Также, на даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ð°Ð¶Ð½Ð¾ знаÑÑ, ÑÑо ÑÑÑоки оÑÐ½Ð¾Ð²Ð°Ð½Ñ Ð½Ð° кодиÑовке Юникод, и поÑÑÐ¾Ð¼Ñ Ð¸Ð½Ð¾Ð³Ð´Ð° могÑÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÑÑ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ñо ÑÑавнениÑми. ÐодÑобнее о Юникоде в главе Юникод, внÑÑÑеннее ÑÑÑÑойÑÑво ÑÑÑок.
ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)