Ð ÑÑой главе пÑиводиÑÑÑ Ð¿Ð¾ÑÑдок ÑабоÑÑ Ñо ÑÑÑоками и ÑекÑÑом в JavaScript.
СÑÑокиСÑÑоки иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ Ð¿ÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑекÑÑовÑÑ Ð´Ð°Ð½Ð½ÑÑ . ÐÐ°Ð¶Ð´Ð°Ñ ÑÑÑока - ÑÑо Ð½Ð°Ð±Ð¾Ñ "ÑлеменÑов", а каждÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ - 16 биÑное беззнаковое Ñелое знаÑение. ÐлеменÑÑ Ð¸Ð¼ÐµÑÑ Ð¾Ð¿ÑеделÑннÑе позиÑии. Так пеÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¸Ð¼ÐµÐµÑ Ð¸Ð½Ð´ÐµÐºÑ 0, ÑледÑÑÑий - 1, и Ñак далее. Ðлина ÑÑÑоки - ÑÑо колиÑеÑÑво ÑлеменÑов в ней. ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑоздаÑÑ ÑÑÑоки, иÑполÑзÑÑ ÑÑÑоковÑе лиÑеÑÐ°Ð»Ñ Ð¸Ð»Ð¸ обÑекÑÑ ÐºÐ»Ð°ÑÑа String.
СÑÑоковÑе лиÑеÑалÑÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑоздаваÑÑ Ð¿ÑоÑÑÑе ÑÑÑоки, иÑполÑзÑÑ Ð»Ð¸Ð±Ð¾ одинаÑнÑе, либо двойнÑе кавÑÑки:
ÐаÑÐ¸Ð½Ð°Ñ Ñо ÑÑандаÑÑа ES6 (ES-2015) Ð´Ð»Ñ Ð¿ÑоÑÑÑÑ Ð¸ ÑложнÑÑ ÑÑÑок можно иÑполÑзоваÑÑ Ð¾Ð±ÑаÑнÑе коÑÑе кавÑÑки, а Ñакже, вÑÑавлÑÑÑ Ð·Ð½Ð°ÑениÑ:
const name = "Alex";
const str = `ÐÑивеÑ, ${name},
как дела?`;
console.log(str);
// ÐÑивеÑ, Alex,
// как дела?
ÐодÑобнее пÑо иÑполÑзование обÑаÑнÑÑ ÐºÐ¾ÑÑÑ ÐºÐ°Ð²ÑÑек (` `), ÑиÑайÑе ниже.
СÑÑоки Ñ Ð±Ð¾Ð»ÐµÐµ богаÑÑм ÑодеÑжимÑм можно ÑоздаÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ESC-поÑледоваÑелÑноÑÑей(комбинаÑÐ¸Ñ Ñимволов, обÑÑно иÑполÑзÑÐµÐ¼Ð°Ñ Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð½ÐµÐ¾ÑобÑажаемÑÑ Ñимволов и Ñимволов, имеÑÑÐ¸Ñ ÑпеÑиалÑное знаÑение):
ШеÑÑнадÑаÑеÑиÑнÑе ÑкÑаниÑованнÑе поÑледоваÑелÑноÑÑиЧиÑло поÑле \x ÑÑакÑÑеÑÑÑ ÐºÐ°Ðº ÑеÑÑнадÑаÑеÑиÑное.
Unicode ÑкÑаниÑованнÑе поÑледоваÑелÑноÑÑиÐкÑаниÑованнÑе поÑледоваÑелÑноÑÑи Unicode ÑÑебÑÑÑ Ð¿Ð¾ менÑÑей меÑе 4 Ñимвола поÑле \u
.
Ðововведение ECMAScript 6, коÑоÑое позволÑÐµÑ ÑкÑаниÑоваÑÑ ÐºÐ°Ð¶Ð´Ñй Unicode Ñимвол, иÑполÑзÑÑ ÑеÑÑнадÑаÑеÑиÑнÑе знаÑÐµÐ½Ð¸Ñ (вплоÑÑ Ð´Ð¾ 0x10FFFF
). С пÑоÑÑÑм ÑкÑаниÑованием Unicode обÑÑно ÑÑебÑеÑÑÑ Ð¿Ð¸ÑаÑÑ ÑвÑзаннÑе дÑÑг Ñ Ð´ÑÑгом ÑаÑÑи по - оÑделÑноÑÑи Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ñого же ÑезÑлÑÑаÑа.
СмоÑÑиÑе Ñакже String.fromCodePoint()
или String.prototype.codePointAt()
.
"\u{2F804}";
// То же Ñамое Ñ Ð¿ÑоÑÑÑм Unicode
"\uD87E\uDC04";
ÐбÑекÑÑ String
ÐбÑекÑ
- ÑÑо обÑÑÑка вокÑÑг пÑимиÑивного ÑÑÑокового Ñипа даннÑÑ
.String
var s = new String("foo"); // Создание обÑекÑа
console.log(s); // ÐÑобÑазиÑÑÑ: { '0': 'f', '1': 'o', '2': 'o'}
typeof s; // ÐеÑнÑÑ 'object'
ÐÑ Ð¼Ð¾Ð¶ÐµÑе вÑзваÑÑ Ð»Ñбой меÑод обÑекÑа клаÑÑа String
на ÑÑÑоковом лиÑеÑале - JavaScript Ñам пÑеобÑазÑÐµÑ ÑÑÑоковÑй лиÑеÑал во вÑеменнÑй обÑÐµÐºÑ String
, вÑÐ·Ð¾Ð²ÐµÑ ÑÑебÑемÑй меÑод и заÑем ÑниÑÑÐ¾Ð¶Ð¸Ñ ÑÑÐ¾Ñ Ð²ÑеменнÑй обÑекÑ. Со ÑÑÑоковÑми лиÑеÑалами Ð²Ñ Ñакже можеÑе иÑполÑзоваÑÑ Ð¸ String.length
ÑвойÑÑво.
СледÑÐµÑ Ð¸ÑполÑзоваÑÑ ÑÑÑоковÑе лиÑеÑÐ°Ð»Ñ Ð´Ð¾ ÑеÑ
поÑ, пока вам дейÑÑвиÑелÑно не обойÑиÑÑ Ð±ÐµÐ· String
обÑекÑа, поÑÐ¾Ð¼Ñ ÑÑо, поÑой, обÑÐµÐºÑ String Ð¼Ð¾Ð¶ÐµÑ Ð²ÐµÑÑи ÑÐµÐ±Ñ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾ (не Ñак, как ÑÑÑоковÑй лиÑеÑал). ÐапÑимеÑ:
var s1 = "2 + 2"; // Создание ÑÑÑокового лиÑеÑала
var s2 = new String("2 + 2"); // Создание String обÑекÑа
eval(s1); // ÐеÑнÑÑ 4
eval(s2); // ÐеÑнÑÑ ÑÑÑÐ¾ÐºÑ "2 + 2"
ÐбÑÐµÐºÑ String
Ð¸Ð¼ÐµÐµÑ ÑвойÑÑво length
, коÑоÑое обознаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво Ñимволов в ÑÑÑоке. ÐапÑимеÑ, в ÑледÑÑÑем коде x полÑÑÐ¸Ñ Ð·Ð½Ð°Ñение 13 поÑомÑ, ÑÑо "Hello, World!" ÑодеÑÐ¶Ð¸Ñ 13 Ñимволов, каждÑй из коÑоÑÑÑ
пÑедÑÑавлен одним кодом UTF-16. ÐÑ Ð¼Ð¾Ð¶ÐµÑе обÑаÑиÑÑÑÑ Ðº ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ ÐºÐ¾Ð´Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ²Ð°Ð´ÑаÑнÑÑ
Ñкобок. ÐÑ Ð½Ðµ можеÑе изменÑÑÑ Ð¾ÑделÑнÑе ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ ÑÑÑоки, Ñ.к. ÑÑÑоки ÑÑо маÑÑива-подобнÑе неизменÑемÑе обÑекÑÑ:
var mystring = "Hello, World!";
var x = mystring.length;
mystring[0] = "L"; // ÐиÑего не пÑоизойдÑÑ, Ñ.к. ÑÑÑоки неизменÑемÑе
mystring[0]; // ÐеÑнÑÑ: "H"
ÐбÑÐµÐºÑ String
Ð¸Ð¼ÐµÐµÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво меÑодов, в Ñом ÑиÑле и Ñе, коÑоÑÑе возвÑаÑаÑÑ Ð¿ÑеобÑазованнÑÑ Ð¸ÑÑ
однÑÑ ÑÑÑÐ¾ÐºÑ (меÑÐ¾Ð´Ñ substring
, toUpperCase
и дÑÑгие).
Ð ÑаблиÑе ниже пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð¼ÐµÑÐ¾Ð´Ñ String обÑекÑа.
ÐеÑод ÐпиÑаниеcharAt
, charCodeAt
, codePointAt
ÐозвÑаÑÐ°ÐµÑ Ñимвол или ÑимволÑнÑй код в Ñказанной позиÑии в ÑÑÑоке. indexOf
, lastIndexOf
ÐозвÑаÑÐ°ÐµÑ Ð¿ÐµÑвÑÑ (indexOf) или поÑледнÑÑ (lastIndexOf) позиÑÐ¸Ñ Ñказанной подÑÑÑоки в ÑÑÑоке. ÐÑли Ð´Ð°Ð½Ð½Ð°Ñ Ð¿Ð¾Ð´ÑÑÑока не найдена, Ñо возвÑаÑÐ°ÐµÑ -1. startsWith
, endsWith
, includes
ÐÑовеÑÑеÑ, наÑинаеÑÑÑ/конÑаеÑÑÑ/ÑодеÑÐ¶Ð¸Ñ Ð»Ð¸ ÑÑÑока ÑказаннÑÑ Ð¿Ð¾Ð´ÑÑÑокÑ. concat
ÐбÑединÑÐµÑ Ð´Ð²Ðµ ÑÑÑоки и возвÑаÑÐ°ÐµÑ ÑезÑлÑÑÐ°Ñ Ð² каÑеÑÑве новой ÑÑÑоки. fromCharCode
, fromCodePoint
СоздаÑÑ ÑÑÑÐ¾ÐºÑ Ð¸Ð· Ñказанной поÑледоваÑелÑноÑÑи Unicode знаÑений. ÐÑо меÑод клаÑÑа String, а не оÑделÑного ÑкземплÑÑа ÑÑого клаÑÑа. split
Ð Ð°Ð·Ð±Ð¸Ð²Ð°ÐµÑ ÑÑÑÐ¾ÐºÑ Ð½Ð° подÑÑÑоки, ÑезÑлÑÑÐ°Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ Ð² виде маÑÑива ÑÑÑок. slice
ÐÐ·Ð²Ð»ÐµÐºÐ°ÐµÑ ÑаÑÑÑ ÑÑÑоки и возвÑаÑÐ°ÐµÑ ÐµÑ Ð² каÑеÑÑве новой ÑÑÑоки. substring
, substr
ÐозвÑаÑÐ°ÐµÑ ÑказаннÑÑ ÑаÑÑÑ ÑÑÑоки по наÑалÑÐ½Ð¾Ð¼Ñ Ð¸ конеÑÐ½Ð¾Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑам, либо по наÑалÑÐ½Ð¾Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¸ длине. match
, replace
, search
РабоÑа Ñ ÑегÑлÑÑнÑми вÑÑажениÑми. toLowerCase
, toUpperCase
ÐозвÑаÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð² нижнем (toLowerCase) или веÑÑ
нем (toUpperCase) ÑегиÑÑÑе. normalize
ÐозвÑаÑÐ°ÐµÑ Ð½Ð¾ÑмализованнÑÑ Unicode ÑоÑÐ¼Ñ ÑÑÑоки - знаÑÐµÐ½Ð¸Ñ Ð¾Ð±ÑекÑа String, на коÑоÑом вÑзÑваеÑÑÑ. repeat
ÐозвÑаÑÐ°ÐµÑ ÑÑÑокÑ, коÑоÑÐ°Ñ Ð¿ÑедÑÑавлÑÐµÑ Ñобой повÑоÑение иÑÑ
одной ÑÑÑоки Ñказанное колиÑеÑÑво Ñаз. trim
УбиÑÐ°ÐµÑ Ð¿ÑÐ¾Ð±ÐµÐ»Ñ Ð² наÑале и в конÑе ÑÑÑоки, ÑезÑлÑÑÐ°Ñ Ð²Ð¾Ð·Ð²ÑаÑаеÑÑÑ Ð² каÑеÑÑве новой ÑÑÑоки. ÐногоÑÑÑоÑнÑе ÑаблоннÑе ÑÑÑоки
ШаблоннÑе ÑÑÑоки пÑедÑÑавлÑÑÑ Ñобой ÑÑÑоковÑе лиÑеÑалÑ, коÑоÑÑе могÑÑ ÑодеÑжаÑÑ Ð²Ð½ÑÑÑи ÑÐµÐ±Ñ Ð²ÑÑÑоеннÑе вÑÑажениÑ. С ними Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð¼Ð½Ð¾Ð³Ð¾ÑÑÑоÑнÑе ÑÑÑоковÑе лиÑеÑÐ°Ð»Ñ Ð¸ инÑеÑполÑÑÐ¸Ñ ÑÑÑок.
Такого Ñипа ÑÑÑоки заклÑÑаÑÑÑÑ Ð² паÑÑ Ð¾Ð±ÑаÑнÑÑ
ÑÑÑиÑ
ов (` `) (grave accent) вмеÑÑо двойнÑÑ
или одинаÑнÑÑ
кавÑÑек. ШаблоннÑе ÑÑÑоки могÑÑ ÑодеÑжаÑÑ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñели, коÑоÑÑе вÑделÑÑÑÑÑ Ð·Ð½Ð°ÐºÐ¾Ð¼ доллаÑа и ÑигÑÑнÑми Ñкобками (${вÑÑажение}
).
ÐÐ°Ð¶Ð´Ð°Ñ Ð½Ð¾Ð²Ð°Ñ Ð³Ð¾ÑизонÑалÑÐ½Ð°Ñ Ð»Ð¸Ð½Ð¸Ñ Ñимволов, вÑÑÐ°Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð² иÑÑ Ð¾Ð´Ð½Ñй код, ÑвлÑеÑÑÑ ÑаÑÑÑÑ Ñаблонной ÑÑÑоки. ÐÑполÑзÑÑ Ð¾Ð±ÑÑнÑе ÑÑÑоки, вам Ð±Ñ Ð¿Ð¾ÑÑебовалоÑÑ Ð¸ÑполÑзоваÑÑ ÑледÑÑÑий ÑинÑакÑÐ¸Ñ Ð´Ð»Ñ Ð¼Ð½Ð¾Ð³Ð¾ÑÑÑоÑной запиÑи:
console.log(
"string text line 1\n\
string text line 2",
);
// "string text line 1
// string text line 2"
Того же ÑезÑлÑÑаÑа можно добиÑÑÑÑ Ð¸ дÑÑгим ÑпоÑобом (иÑполÑзÑÑ ÑинÑакÑÐ¸Ñ ÑаблоннÑÑ ÑÑÑок):
console.log(`string text line 1
string text line 2`);
// "string text line 1
// string text line 2"
ÐÑÑÑоеннÑе вÑÑажениÑ
ÐÐ»Ñ Ñого, ÑÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð²ÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð²Ð½ÑÑÑÑ Ð¾Ð±ÑÑнÑÑ ÑÑÑок, Ð²Ñ Ð±Ñ Ð¸ÑполÑзовали ÑледÑÑÑий ÑинÑакÑиÑ:
var a = 5;
var b = 10;
console.log("Fifteen is " + (a + b) + " and\nnot " + (2 * a + b) + ".");
// "Fifteen is 15 and
// not 20."
ТепеÑÑ Ð¶Ðµ, иÑполÑзÑÑ ÑаблоннÑе ÑÑÑоки, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑделаÑÑ ÑÑо Ñак:
var a = 5;
var b = 10;
console.log(`Fifteen is ${a + b} and\nnot ${2 * a + b}.`);
// "Fifteen is 15 and
// not 20."
ÐÐ»Ñ Ð±Ð¾Ð»ÐµÐµ подÑобной инÑоÑмаÑии ÑмоÑÑи ШаблоннÑе ÑÑÑоки в ÑпÑавоÑнике по JavaScript.
ÐнÑеÑнаÑионализаÑиÑÐбÑÐµÐºÑ Intl
пÑедÑÑавлÑÐµÑ Ñобой пÑоÑÑÑанÑÑво имÑн Ð´Ð»Ñ ECMAScript API по инÑеÑнаÑионализаÑии, коÑоÑое обеÑпеÑÐ¸Ð²Ð°ÐµÑ ÑÑвÑÑвиÑелÑное к ÑзÑÐºÑ ÑÑавнение ÑÑÑок, ÑоÑмаÑиÑование ÑиÑел, вÑемени и даÑÑ. ÐонÑÑÑÑкÑоÑÑ Ð´Ð»Ñ Ð¾Ð±ÑекÑов Collator
, NumberFormat
и DateTimeFormat
ÑвлÑÑÑÑÑ ÑвойÑÑвами обÑекÑа Intl
.
ÐбÑÐµÐºÑ DateTimeFormat
полезен Ð´Ð»Ñ ÑоÑмаÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñемени и даÑÑ. РпÑимеÑе ниже даÑа ÑоÑмаÑиÑÑеÑÑÑ Ñак, как ÑÑо пÑинÑÑо в СШР(ÑезÑлÑÑÐ°Ñ Ð¾ÑлиÑен Ð´Ð»Ñ ÑазнÑÑ
вÑеменнÑÑ
зон).
var msPerDay = 24 * 60 * 60 * 1000;
// July 17, 2014 00:00:00 UTC.
var july172014 = new Date(msPerDay * (44 * 365 + 11 + 197));
var options = {
year: "2-digit",
month: "2-digit",
day: "2-digit",
hour: "2-digit",
minute: "2-digit",
timeZoneName: "short",
};
var americanDateTime = new Intl.DateTimeFormat("en-US", options).format;
console.log(americanDateTime(july172014)); // 07/16/14, 5:00 PM PDT
ФоÑмаÑиÑование ÑиÑел
ÐбÑÐµÐºÑ NumberFormat
полезен пÑи ÑоÑмаÑиÑовании ÑиÑел, напÑимеÑ, валÑÑ.
var gasPrice = new Intl.NumberFormat("en-US", {
style: "currency",
currency: "USD",
minimumFractionDigits: 3,
});
console.log(gasPrice.format(5.259)); // $5.259
var hanDecimalRMBInChina = new Intl.NumberFormat("zh-CN-u-nu-hanidec", {
style: "currency",
currency: "CNY",
});
console.log(hanDecimalRMBInChina.format(1314.25)); // ï¿¥ ä¸,ä¸ä¸å.äºäº
СÑавнение
ÐбÑÐµÐºÑ Collator
полезен Ð´Ð»Ñ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð¸ ÑоÑÑиÑовки ÑÑÑок.
ÐапÑимеÑ, в ÐеÑмании еÑÑÑ Ð´Ð²Ð° ÑазлиÑнÑÑ Ð¿Ð¾ÑÑдка ÑоÑÑиÑовки ÑÑÑок в завиÑимоÑÑи Ð¾Ñ Ð´Ð¾ÐºÑменÑа: ÑелеÑÐ¾Ð½Ð½Ð°Ñ ÐºÐ½Ð¸Ð³Ð° или ÑловаÑÑ. СоÑÑиÑовка по ÑÐ¸Ð¿Ñ ÑелеÑонной книги подÑÑÑÐºÐ¸Ð²Ð°ÐµÑ Ð·Ð²Ñки.
var names = ["Hochberg", "Hönigswald", "Holzman"];
var germanPhonebook = new Intl.Collator("de-DE-u-co-phonebk");
// as if sorting ["Hochberg", "Hoenigswald", "Holzman"]:
console.log(names.sort(germanPhonebook.compare).join(", "));
// logs "Hochberg, Hönigswald, Holzman"
ÐÑимеÑом по ÑоÑÑиÑовке Ð´Ð»Ñ ÑловаÑÑ Ñлов на немеÑком ÑзÑке ÑлÑÐ¶Ð¸Ñ ÑледÑÑÑий код:
var germanDictionary = new Intl.Collator("de-DE-u-co-dict");
// as if sorting ["Hochberg", "Honigswald", "Holzman"]:
console.log(names.sort(germanDictionary.compare).join(", "));
// logs "Hochberg, Holzman, Hönigswald"
ÐÐ»Ñ Ð±Ð¾Ð»ÐµÐµ подÑобной инÑоÑмаÑии об Intl
API ÑмоÑÑи Introducing the JavaScript Internationalization API.
РегÑлÑÑнÑе вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ - ÑÑо ÑаблонÑ, коÑоÑÑе иÑполÑзÑÑÑÑÑ Ð´Ð»Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð½ÐµÐºÐ¾ÑоÑого множеÑÑва ÑÑÑок . ÐÑо оÑÐµÐ½Ñ Ð¼Ð¾ÑнÑй и в некоÑоÑÑй ÑÑепени непÑоÑÑой Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼, и поÑÑÐ¾Ð¼Ñ ÐµÐ¼Ñ Ð¿Ð¾ÑвÑÑена оÑделÑÐ½Ð°Ñ Ð³Ð»Ð°Ð²Ð°. УзнаÑÑ Ð±Ð¾Ð»ÑÑе о ÑегÑлÑÑнÑÑ Ð²ÑÑажениÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ здеÑÑ:
RegExp
ÑÑÑлка в докÑменÑаÑии.RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4