String.prototype.replace()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since иÑÐ»Ñ 2015 г..
Сводка
ÐеÑод replace() возвÑаÑÐ°ÐµÑ Ð½Ð¾Ð²ÑÑ ÑÑÑÐ¾ÐºÑ Ñ Ð½ÐµÐºÐ¾ÑоÑÑми или вÑеми ÑопоÑÑавлениÑми Ñ Ñаблоном, заменÑннÑми на замениÑелÑ. Шаблон Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑÑÑокой или ÑегÑлÑÑнÑм вÑÑажением, а замениÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑÑÑокой или ÑÑнкÑией, вÑзÑваемой пÑи каждом ÑопоÑÑавлении.
СинÑакÑиÑ
str.replace(regexp|substr, newSubStr|function[, flags])
ÐаÑамеÑÑÑ
regexp-
ÐбÑÐµÐºÑ ÑегÑлÑÑного вÑÑажениÑ
RegExp. СопоÑÑавление заменÑеÑÑÑ Ð²Ð¾Ð·Ð²ÑаÑаемÑм знаÑением вÑоÑого паÑамеÑÑа. substr-
СÑÑока, заменÑÐµÐ¼Ð°Ñ Ð½Ð°
newSubStr. ÐбÑаÑиÑе внимание, бÑÐ´ÐµÑ Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ð¾ ÑолÑко пеÑвое Ð²Ñ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ðµ иÑкомой ÑÑÑоки. newSubStr-
СÑÑока, заменÑÑÑÐ°Ñ Ð¿Ð¾Ð´ÑÑÑÐ¾ÐºÑ Ð¸Ð· пеÑвого паÑамеÑÑа. ÐоддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð½ÐµÑколÑко ÑпеÑиалÑнÑÑ Ñаблонов заменÑ; ÑмоÑÑиÑе ниже Ñаздел ÐеÑедаÑа ÑÑÑоки в каÑеÑÑве вÑоÑого паÑамеÑÑа.
function-
ФÑнкÑиÑ, вÑзÑÐ²Ð°ÐµÐ¼Ð°Ñ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ подÑÑÑоки (помеÑаемой вмеÑÑо подÑÑÑоки из пеÑвого паÑамеÑÑа). ÐÑгÑменÑÑ, пеÑедаваемÑе ÑÑнкÑии, опиÑÐ°Ð½Ñ Ð½Ð¸Ð¶Ðµ в Ñазделе ÐеÑедаÑа ÑÑнкÑии в каÑеÑÑве вÑоÑого паÑамеÑÑа.
flags-
ÐбÑаÑиÑе внимание: аÑгÑменÑ
flagsне ÑабоÑÐ°ÐµÑ Ð² ÑдÑе v8 (движок JavaScript в Chrome и NodeJs). СÑÑока, задаÑÑÐ°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°ÑÐ¸Ñ Ñлагов ÑегÑлÑÑного вÑÑажениÑ. ÐаÑамеÑÑflagsв меÑодеString.prototype.replace()ÑвлÑеÑÑÑ Ð½ÐµÑÑандаÑÑнÑм ÑаÑÑиÑением. ÐмеÑÑо иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑого паÑамеÑÑа иÑполÑзÑйÑе обÑекÑRegExpÑ ÑооÑвеÑÑÑвÑÑÑими Ñлагами. ÐнаÑение ÑÑого паÑамеÑÑа, еÑли он иÑполÑзÑеÑÑÑ, должно бÑÑÑ ÑÑÑокой, ÑоÑÑоÑÑей из одного или более ÑледÑÑÑÐ¸Ñ Ñимволов, ÑледÑÑÑим обÑазом влиÑÑÑÐ¸Ñ Ð½Ð° обÑабоÑÐºÑ ÑегÑлÑÑного вÑÑажениÑ:
ÐозвÑаÑаемое знаÑение
ÐÐ¾Ð²Ð°Ñ ÑÑÑока Ñ Ð½ÐµÐºÐ¾ÑоÑÑми или вÑеми ÑопоÑÑавлениÑми Ñаблона, заменÑннÑми на замениÑелÑ.
ÐпиÑание
ÐÑÐ¾Ñ Ð¼ÐµÑод не изменÑÐµÑ Ð¾Ð±ÑÐµÐºÑ String, на коÑоÑом он вÑзÑваеÑÑÑ. Ðн пÑоÑÑо возвÑаÑÐ°ÐµÑ Ð½Ð¾Ð²ÑÑ ÑÑÑокÑ.
ÐÐ»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð³Ð»Ð¾Ð±Ð°Ð»Ñного поиÑка и Ð·Ð°Ð¼ÐµÐ½Ñ Ð»Ð¸Ð±Ð¾ вклÑÑиÑе Ñлаг g в ÑегÑлÑÑное вÑÑажение, либо, еÑли пеÑвÑй паÑамеÑÑ ÑвлÑеÑÑÑ ÑÑÑокой, вклÑÑиÑе Ñлаг g в паÑамеÑÑ flags.
ÐеÑедаÑа ÑÑÑоки в каÑеÑÑве вÑоÑого паÑамеÑÑа
ÑÑÑока Ð·Ð°Ð¼ÐµÐ½Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²ÐºÐ»ÑÑаÑÑ ÑледÑÑÑие ÑпеÑиалÑнÑе ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ð·Ð°Ð¼ÐµÐ½Ñ:
| Шаблон | Ðамена |
|---|---|
$$ |
ÐÑÑавлÑÐµÑ Ñимвол доллаÑа «$». |
$& |
ÐÑÑавлÑÐµÑ ÑопоÑÑавивÑÑÑÑÑ Ð¿Ð¾Ð´ÑÑÑокÑ. |
$` |
ÐÑÑавлÑÐµÑ ÑаÑÑÑ ÑÑÑоки, пÑедÑеÑÑвÑÑÑÑÑ ÑопоÑÑавивÑейÑÑ Ð¿Ð¾Ð´ÑÑÑоке. |
$' |
ÐÑÑавлÑÐµÑ ÑаÑÑÑ ÑÑÑоки, ÑледÑÑÑÑÑ Ð·Ð° ÑопоÑÑавивÑейÑÑ Ð¿Ð¾Ð´ÑÑÑокой. |
$n или $nn |
Ð¡Ð¸Ð¼Ð²Ð¾Ð»Ñ n или nn ÑвлÑÑÑÑÑ Ð´ÐµÑÑÑиÑнÑми ÑиÑÑами, вÑÑавлÑÐµÑ n-нÑÑ ÑопоÑÑавивÑÑÑÑÑ Ð¿Ð¾Ð´Ð³ÑÑÐ¿Ð¿Ñ Ð¸Ð· обÑекÑа RegExp в пеÑвом паÑамеÑÑе. |
ÐеÑедаÑа ÑÑнкÑии в каÑеÑÑве вÑоÑого паÑамеÑÑа
РкаÑеÑÑве вÑоÑого паÑамеÑÑа Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе пеÑедаÑÑ ÑÑнкÑиÑ. Ð ÑÑом ÑлÑÑае ÑÑнкÑÐ¸Ñ Ð±ÑÐ´ÐµÑ Ð²Ñполнена поÑле пÑоизоÑедÑего ÑопоÑÑавлениÑ. РезÑлÑÑÐ°Ñ Ð²Ñзова ÑÑнкÑии (ÐµÑ Ð²Ð¾Ð·Ð²ÑаÑаемое знаÑение) бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð² каÑеÑÑве ÑÑÑоки Ð·Ð°Ð¼ÐµÐ½Ñ (обÑаÑиÑе внимание: опиÑаннÑе вÑÑе ÑпеÑиалÑнÑе ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ð·Ð°Ð¼ÐµÐ½Ñ Ð² ÑÑом ÑлÑÑае не пÑименÑÑÑÑÑ). ÐбÑаÑиÑе внимание, ÑÑо ÑÑнкÑÐ¸Ñ Ð±ÑÐ´ÐµÑ Ð²Ñзвана неÑколÑко Ñаз Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ полного ÑопоÑÑавлениÑ, еÑли ÑегÑлÑÑное вÑÑажение в пеÑвом паÑамеÑÑе ÑвлÑеÑÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑм.
ФÑнкÑÐ¸Ñ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑледÑÑÑие аÑгÑменÑÑ:
| Ðозможное Ð¸Ð¼Ñ | ÐолÑÑаемое знаÑение |
|---|---|
match |
СопоÑÑавивÑаÑÑÑ Ð¿Ð¾Ð´ÑÑÑока (ÑооÑвеÑÑÑвÑÐµÑ ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ð·Ð°Ð¼ÐµÐ½Ñ $&, опиÑÐ°Ð½Ð½Ð¾Ð¼Ñ Ð²ÑÑе). |
p1, p2, ... |
n-Ð½Ð°Ñ ÑопоÑÑавивÑаÑÑÑ Ð¿Ð¾Ð´Ð³ÑÑппа из обÑекÑа RegExp в пеÑвом паÑамеÑÑе меÑода replace() (ÑооÑвеÑÑÑвÑÐµÑ Ñаблонам Ð·Ð°Ð¼ÐµÐ½Ñ $1, $2 и Ñак далее, опиÑаннÑм вÑÑе). ÐапÑимеÑ, еÑли в каÑеÑÑве Ñаблона пеÑедано ÑегÑлÑÑное вÑÑажение /(\a+)(\b+)/, паÑамеÑÑ p1 бÑÐ´ÐµÑ Ð·Ð½Ð°Ñение ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð´Ð³ÑÑппой \a+, а паÑамеÑÑ p2 â Ñ Ð¿Ð¾Ð´Ð³ÑÑппой \b+. |
offset |
СмеÑение ÑопоÑÑавивÑейÑÑ Ð¿Ð¾Ð´ÑÑÑоки внÑÑÑи вÑей ÑаÑÑмаÑÑиваемой ÑÑÑоки (напÑимеÑ, еÑли вÑÑ ÑÑÑока Ñавна 'abcd', а ÑопоÑÑавивÑаÑÑÑ Ð¿Ð¾Ð´ÑÑÑока Ñавна 'bc', Ñо ÑÑÐ¾Ñ Ð°ÑгÑÐ¼ÐµÐ½Ñ Ð±ÑÐ´ÐµÑ Ñавен 1). |
string |
ÐÑÑ ÑаÑÑмаÑÑÐ¸Ð²Ð°ÐµÐ¼Ð°Ñ ÑÑÑока. |
ТоÑное ÑиÑло аÑгÑменÑов бÑÐ´ÐµÑ Ð·Ð°Ð²Ð¸ÑеÑÑ Ð¾Ñ Ñого, бÑл ли пеÑвÑм аÑгÑменÑом обÑÐµÐºÑ RegExp и, еÑли бÑл, ÑколÑко подгÑÑпп в нÑм опÑеделено.
СледÑÑÑий пÑÐ¸Ð¼ÐµÑ ÑÑÑÐ°Ð½Ð¾Ð²Ð¸Ñ Ð¿ÐµÑеменнÑÑ newString в знаÑение 'abc - 12345 - #$*%':
function replacer(match, p1, p2, p3, offset, string) {
// p1 - не ÑиÑÑÑ, p2 - ÑиÑÑÑ, p3 - не бÑÐºÐ²Ñ Ð¸ не ÑиÑÑÑ
return [p1, p2, p3].join(" - ");
}
var newString = "abc12345#$*%".replace(/([^\d]*)(\d*)([^\w]*)/, replacer);
ÐÑимеÑÑ
>ÐÑимеÑ: иÑполÑзование Ñлагов global и ignore Ñ Ð¼ÐµÑодом replace()
Ð ÑледÑÑÑем пÑимеÑе ÑегÑлÑÑное вÑÑажение вклÑÑÐ°ÐµÑ Ñлаги Ð´Ð»Ñ Ð³Ð»Ð¾Ð±Ð°Ð»Ñного поиÑка и игноÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑегиÑÑÑа, коÑоÑÑе позволÑÑÑ Ð¼ÐµÑÐ¾Ð´Ñ replace() замениÑÑ Ð²Ñе вÑ
Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ñлова «Ñблоки» в ÑÑÑоке на Ñлово «апелÑÑинÑ».
var re = /Ñблоки/gi;
var str = "Яблоки кÑÑглÑе и Ñблоки ÑоÑнÑе.";
var newstr = str.replace(re, "апелÑÑинÑ");
console.log(newstr); // апелÑÑÐ¸Ð½Ñ ÐºÑÑглÑе и апелÑÑÐ¸Ð½Ñ ÑоÑнÑе.
ÐÑимеÑ: пеÑедаÑа ÑегÑлÑÑного вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð² меÑод replace()
Ð ÑледÑÑÑем пÑимеÑе в меÑод replace() пеÑедаÑÑÑÑ ÑегÑлÑÑное вÑÑажение вмеÑÑе Ñ Ñлагом игноÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑегиÑÑÑа.
// ÐоÑÑ Ð¿ÐµÑед РождеÑÑвом, Xmas - ÑокÑаÑение Ð´Ð»Ñ Christmas
var str = "Twas the night before Xmas...";
var newstr = str.replace(/xmas/i, "Christmas");
console.log(newstr); // Twas the night before Christmas...
ÐÑÐ¸Ð¼ÐµÑ Ð²ÑÐ²ÐµÐ´ÐµÑ ÑÑÑÐ¾ÐºÑ 'Twas the night before Christmas...'
ÐÑимеÑ: Ñмена меÑÑами Ñлов в ÑÑÑоке
СледÑÑÑий ÑкÑÐ¸Ð¿Ñ Ð¼ÐµÐ½ÑÐµÑ Ð¼ÐµÑÑами Ñлова в ÑÑÑоке. РкаÑеÑÑве ÑекÑÑа Ð·Ð°Ð¼ÐµÐ½Ñ Ð¾Ð½ иÑполÑзÑÐµÑ ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ð·Ð°Ð¼ÐµÐ½Ñ $1 и $2.
var re = /([Ð-ЯÐа-ÑÑ]+)\s([Ð-ЯÐа-ÑÑ]+)/;
var str = "Ðжон СмиÑ";
var newstr = str.replace(re, "$2, $1");
console.log(newstr); // СмиÑ, Ðжон
ÐÑÐ¸Ð¼ÐµÑ Ð²ÑÐ²ÐµÐ´ÐµÑ ÑÑÑÐ¾ÐºÑ 'СмиÑ, Ðжон'.
ÐÑимеÑ: иÑполÑзование ÑÑнкÑии Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÑопоÑÑавивÑÐ¸Ñ ÑÑ Ñимволов
Ð ÑÑом пÑимеÑе вÑе Ð²Ñ Ð¾Ð´ÑÑие в ÑÑÑÐ¾ÐºÑ (лаÑинÑкие) бÑÐºÐ²Ñ Ð² веÑÑ Ð½ÐµÐ¼ ÑегиÑÑÑе пÑеобÑазÑÑÑÑÑ Ð² нижний ÑегиÑÑÑ, а пеÑед Ñамой бÑквой вÑÑавлÑеÑÑÑ Ð´ÐµÑиÑ. ÐдеÑÑ Ð²Ð°Ð¶Ð½Ð¾ Ñо, ÑÑо пÑежде Ñем ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð²ÑÑавиÑÑÑ Ð² каÑеÑÑве заменÑ, над ним нÑжно пÑовеÑÑи дополниÑелÑнÑе пÑеобÑазованиÑ.
ФÑнкÑÐ¸Ñ Ð·Ð°Ð¼ÐµÐ½Ñ Ñвоим паÑамеÑÑом пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑопоÑÑавивÑийÑÑ ÐºÑÑок и пеÑед возвÑаÑом иÑполÑзÑÐµÑ ÐµÐ³Ð¾ Ð´Ð»Ñ Ð¿ÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑегиÑÑÑа и ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ Ð´ÐµÑиÑом.
function styleHyphenFormat(propertyName) {
function upperToHyphenLower(match) {
return "-" + match.toLowerCase();
}
return propertyName.replace(/[A-Z]/g, upperToHyphenLower);
}
ÐÑзов styleHyphenFormat('borderTop') веÑнÑÑ ÑÑÑÐ¾ÐºÑ 'border-top'.
ÐоÑколÑÐºÑ Ð¼Ñ Ñ
оÑим пÑовеÑÑи дополниÑелÑнÑе пÑеобÑÐ°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑезÑлÑÑаÑа ÑопоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð¾ Ñого, как бÑÐ´ÐµÑ Ð¸ÑполÑзована оконÑаÑелÑÐ½Ð°Ñ Ð¿Ð¾Ð´ÑÑановка, Ð¼Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¸ÑполÑзоваÑÑ ÑÑнкÑиÑ. ÐÑо заÑÑавлÑÐµÑ Ð½Ð°Ñ Ð¿ÑинÑдиÑелÑно вÑÑиÑлиÑÑ ÑопоÑÑавление пеÑед иÑполÑзование меÑода toLowerCase(). ÐÑли Ð±Ñ Ð¼Ñ Ð¿Ð¾Ð¿ÑÑалиÑÑ Ð¸ÑполÑзоваÑÑ ÑопоÑÑавление без ÑÑнкÑии, меÑод toLowerCase() не ÑÑабоÑал бÑ.
var newString = propertyName.replace(/[A-Z]/g, "-" + "$&".toLowerCase()); // не ÑабоÑаеÑ
ÐÑоиÑÑ
Ð¾Ð´Ð¸Ñ ÑÑо поÑомÑ, ÑÑо ÑнаÑала ÑаÑÑÑ '$&'.toLowerCase() вÑÑиÑлÑеÑÑÑ Ð² ÑÑÑоковÑй лиÑеÑал (ÑезÑлÑÑÐ°Ñ Ð¿Ð¾-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ñавен '$&'), а ÑолÑко поÑом его ÑÐ¸Ð¼Ð²Ð¾Ð»Ñ Ð¸ÑполÑзÑÑÑÑÑ Ð² каÑеÑÑве Ñаблона.
ÐÑимеÑ: замена гÑадÑÑов по ФаÑенгейÑÑ Ð½Ð° ÑÐºÐ²Ð¸Ð²Ð°Ð»ÐµÐ½Ñ Ð² гÑадÑÑÐ°Ñ Ð¿Ð¾ ЦелÑÑиÑ
Ð ÑледÑÑÑем пÑимеÑе гÑадÑÑÑ Ð¿Ð¾ ФаÑенгейÑÑ Ð·Ð°Ð¼ÐµÐ½ÑÑÑÑÑ Ð½Ð° ÑквиваленÑнÑе гÑадÑÑÑ Ð¿Ð¾ ЦелÑÑиÑ. ÐÑадÑÑÑ Ð¿Ð¾ ФаÑенгейÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ ÑиÑлом, оканÑиваÑÑимÑÑ Ð½Ð° бÑÐºÐ²Ñ F. ФÑнкÑÐ¸Ñ Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво гÑадÑÑов по ЦелÑÑиÑ, оканÑиваÑÑиеÑÑ Ð½Ð° бÑÐºÐ²Ñ C. ÐапÑимеÑ, еÑли Ð²Ñ Ð¾Ð´Ð½Ð¾Ðµ ÑиÑло ÑавнÑеÑÑÑ 212F, ÑÑнкÑÐ¸Ñ Ð²ÐµÑнÑÑ 100C. ÐÑли ÑиÑло ÑавнÑеÑÑÑ 0F, ÑÑнкÑÐ¸Ñ Ð²ÐµÑнÑÑ -17.77777777777778C.
РегÑлÑÑное вÑÑажение test ÑопоÑÑавлÑеÑÑÑ Ñ Ð»ÑбÑм ÑиÑлом, оканÑиваÑÑимÑÑ Ð½Ð° бÑÐºÐ²Ñ F. ÐолиÑеÑÑво гÑадÑÑов по ФаÑенгейÑÑ Ð¿ÐµÑедаÑÑÑÑ Ð² ÑÑнкÑÐ¸Ñ ÑеÑез ÐµÑ Ð²ÑоÑой паÑамеÑÑ, p1. ФÑнкÑÐ¸Ñ Ð¿ÐµÑÐµÐ²Ð¾Ð´Ð¸Ñ Ð³ÑадÑÑÑ Ð¿Ð¾ ФаÑенгейÑÑ, пеÑеданнÑе в виде ÑÑÑоки в ÑÑнкÑÐ¸Ñ code>f2c(), в гÑадÑÑÑ Ð¿Ð¾ ЦелÑÑиÑ. ÐаÑем ÑÑнкÑÐ¸Ñ f2c() возвÑаÑÐ°ÐµÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво гÑадÑÑов по ЦелÑÑиÑ. ÐÑа ÑÑнкÑÐ¸Ñ ÑабоÑÐ°ÐµÑ Ð¿ÑимеÑно Ñак же, как и Ñлаг s///e в Perl.
function f2c(x) {
function convert(str, p1, offset, s) {
return ((p1 - 32) * 5) / 9 + "C";
}
var s = String(x);
var test = /(\d+(?:\.\d*)?)F\b/g;
return s.replace(test, convert);
}
ÐÑимеÑ: иÑполÑзование ÑÑнкÑии вмеÑÑе Ñ ÑегÑлÑÑнÑм вÑÑажением Ð´Ð»Ñ Ð¸Ð·Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ Ñикла for
СледÑÑÑий пÑÐ¸Ð¼ÐµÑ Ð¿ÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑÑÑÐ¾ÐºÑ Ñаблона и пÑеобÑазÑÐµÑ ÐµÑ Ð² маÑÑив обÑекÑов.
ÐÑ Ð¾Ð´Ð½Ñе даннÑе:
СÑÑока, ÑоÑÑоÑÑÐ°Ñ Ð¸Ð· Ñимволов x, - и _
x-x_ x---x---x---x--- x-xxx-xx-x- x_x_x___x___x___
ÐÑÑ Ð¾Ð´Ð½Ñе даннÑе:
ÐаÑÑив обÑекÑов. Символ 'x' ознаÑÐ°ÐµÑ ÑоÑÑоÑние 'on', Ñимвол '-' (деÑиÑ) ознаÑÐ°ÐµÑ ÑоÑÑоÑние 'off', а Ñимвол '_' (нижнее подÑÑÑкивание) ознаÑÐ°ÐµÑ Ð¿ÑодолжиÑелÑноÑÑÑ ÑоÑÑоÑÐ½Ð¸Ñ 'on'.
[
{ on: true, length: 1 },
{ on: false, length: 1 },
{ on: true, length: 2 }
...
]
Ðод:
var str = "x-x_";
var retArr = [];
str.replace(/(x_*)|(-)/g, function (match, p1, p2) {
if (p1) {
retArr.push({ on: true, length: p1.length });
}
if (p2) {
retArr.push({ on: false, length: 1 });
}
});
console.log(retArr);
ÐÑÐ¾Ñ ÐºÐ¾Ð´ ÑгенеÑиÑÑÐµÑ Ð¼Ð°ÑÑив из ÑÑÑÑ
обÑекÑов в опиÑанном ÑоÑмаÑе без иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñикла for.
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-string.prototype.replace> |