Javascript заменить символ строки

replace

Этот метод не меняет вызывающую строку, а возвращает новую, после замен.

Чтобы произвести глобальный поиск и замену, используйте regexp c флагом «g».

Строка замены

Если вы указываете строку как второй параметр — она может включать в себя следующие специальные сочетания:

$$ Вставляет «$» $& Вставляет совпавшую подстроку $` Вставляет часть строки, которая предшествует совпавшей подстроке $’ Вставляет часть строки, которая следует за совпавшей подстрокой $n или $nn, где n/nn — десятичные цифры Вставляет n-ю скобку в совпадении, если первый аргумент — объект RegExp

Функция замены

Если вы указываете функцию в качестве второго параметра, то она вызывается при каждом совпадении.

Ваша функция может динамически генерировать строку, которая заменит совпавшую подстроку. В качестве значения для замены используется результат работы функции.

Функция может использовать совпавшие подстроки — она их получает в параметрах вызова. Первый параметр всегда содержит полную совпавшую подстроку.

Если при вызове replace указано регулярное выражение, а не строка, то последующие параметры будут содержать значения скобочных групп.

Наконец, последние два параметра — позиция, на которой произошло совпадения и вызывающая строка.

Следующий пример вернет my XX, zz .

function replacer(str, p1, p2, offset, s) < return p1 + ", " + p2; >newString = "my XXzz".replace(/(X+)(z+)/, replacer)

Значения параметров при вызове replacer :

str «XXzz» — совпавшая подстрока p1 «XX» — первая скобка p2 «zz» — вторая скобка offset 3 — позиция в тексте для поиска s «my XXzz» — вызывающая строка, т.е строка для поиска

В следующем примере используется строка замены. Глобального поиска при этом не происходит.

str = "тест еще тест" str.replace("тест","прошел") // = "прошел еще тест"

Для глобального поиска используйте регулярное выражение.

str = "тест еще тест" str.replace(/тест/g,"прошел") // = "прошел еще прошел" // или так str.replace(new RegExp("тест",'g'),"прошел")

Следующий пример использует при замене сочетания $1 и $2 для ссылок на результат поиска.

var re = /(\w+)\s(\w+)/; var str = "John Smith"; var newstr = str.replace(re, "$2, $1") // "Smith, John"

Спасибо! И все же жаль, что нет замены без регулярных выражений.

'somestring\\w'.replace('\\w', '@') // → somestring@

Спасиб ОГРОМНОЕ. Я долго думал,почему replace заменял не все строки,но когда поставил с new RegExp(«тест»,’g’) всё пофурчало. СПС.

Опечатка:
. Чтобы произвести глобальныЙ поиск.

Для глобальной замены лучше подходит str.split(search).join(replace); и работает быстрее, и беспокоиться о спецсимволах почти не надо.

Спасибо! Долго не мог решить вопрос с вырезанием спец символов.

Метод split вызовет ошибку, если подстрока search не будет найдена в строке str. Т.О. сий подход не универсален. Следует это помнить!
И еще не очень удобно, потому что реальная строка будет заменена, а если это шаблонная строка? Например, ест апельсины?

>Метод split вызовет ошибку, если подстрока search не будет найдена в строке str.
Не могу получить такую ошибку. Вы ошиблись?

let str = 'Метод split вызовет ошибку, если подстрока search не будет найдена в строке str.'; let str2 = str.split('z').join('яяя'); console.log(str2);

Спасибо и низкий поклон тебе.

Класс! Вот это то что долго искал! Я зае. с этими регулярками. Спасибо!

подскажите как можно стереть все \&nbsp\; лучше вообще все спец символы. может есть какой-то аналог addslashes или mysql_real_escape_string

А как найти в строке, скажем, 20-й символ (причем без разницы, что за символ там будет стоять) и заменить его например на «А» ?

str = ‘bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb’.split(«»);
str[19] = ‘A’;
str = str.join(«»);
alert(str);

Спасибо большое! Но я не понял, как работает str.replace(anything, function);

А изза чего может быть проблема при глобальной замене, когда не заменяются символы []

Возможно нужно экранировать символы «[» и «]» обратным слэшем.

подскажите как сделать так штоб через replace оствлось только:Сайт для любителей домашних животных и не только. Новости из мира животных

подскажите как сделать так штоб через replace оствлось только:Сайт для любителей домашних животных и не только. Новости из мира животных

meta style=»border-color: rgb(0, 0, 255); border-width: 2px; border-style: solid;» name=»description» content=»Сайт для любителей домашних животных и не только. Новости из мира животных»

Ребята, подскажите плз как удалить из строки подстроку, которая начинается с символов «>>» и заканчивается »

function toAbsURL(s) var l = location, h, p, f, i;
if (/^\w+:/.test(s)) return s;
>
h = l.protocol + ‘//’ + l.host + (l.port!=»?(‘:’ + l.port):»);
if (s.indexOf(‘/’) == 0) return h + s;
>
p = l.pathname.replace(/\/[^\/]*$/, »);
f = s.match(/\.\.\//g);
if (f) s = s.substring(f.length * 3);
for (i = f.length; i—;) p = p.substring(0, p.lastIndexOf(‘/’));
>
>
return h + p + ‘/’ + s;
>
var base = document.getElementsByTagName(‘base’)[0];
base.href = toAbsURL(base.href);

То, что надо! Очень понятно!

никак не пойму как через репласе заменить два тега одним проходом? в том смысле если встретиться < p >или < /p >заменить на «». Пока делаю тупо так:


В пиве сила! В вине мудрость! А в воде. микробы!

Спасибо Вам большое,пролили свет в мою темную утомительную ночь

спасибо за объяснение роли флага /../g
и да прибудет с вами

Ребят а не подскажите возможно ли:

В базе есть построчный текст. При выводе через replace на конце строки ставится . Возможно как-то ли вместо на конце заключать строку в теги

Блин сорри все теги порезались.

В базе mysql в ячейке есть построчный текст. При выводе через replace на конце строки ставится тег BR. Возможно как-то ли вместо BR на конце заключать каждую строку в тег P

А можно ли заменить текст на пустой символ? Чтобы ничего не было?

Забавное поведение функции:

var string = "1"; string.replace("", "sad"); alert(string); // sad1 -

Привет, спасибо за статью. Есть такая проблема:

'href?lang=en_GB'.replace(/lang=.*&?/, 'lang=en_US&'); // 'href?lang=en_US&' --> ok 'href?lang=en_GB¶m=true'.replace(/lang=.*&?/); // 'href?lang=en_US&' --> 'param=true' исчезло --> ?!

Непонятно, почему так работает.

'href?lang=en_GB'.replace(/lang=[^&]*/, 'lang=en_US'); // "href?lang=en_US" 'href?lang=en_GB¶m=true'.replace(/lang=[^&]*/, 'lang=en_US'); // "href?lang=en_US¶m=true"

я так понял replace работает 1 раз?
т.к. выполняю след.
link = link.replace(/\ /g, ‘-‘);
заменяю пробелы на дефис
далее мне нужно заменить в этом же $str все лишние символы слеши скобки и т.д.
ничего не выходит, выручайте!

или если надо убрать все символы не буквы и не цифры и заменить на дефисы, то так:

Спасибо за эту подсказку. Она мне помогла.

А может ли эта функция заменять в тексте разные фрагменты на разные выражения, например «Курица» заменить на «яйцо» и параллельно «волк» заменить на «ягнёнок» ?

ничего не понял, но все равно спс)
автор написал так,что понять может только тот, кто не знал какого-то отдельного момента.
именно поэтому на рынке у нас учебники из США, что авторы просто тупо ленятся объяснить четко и подробно

Вопрос на счёт >:

Кто нибудь пояснить может, что эта функция возращает при, так сказать, false. То есть, если искомая строка не найдена: Стандартно: «-1» или булевское значение?

Добавлю и я свой «костыль» по глобальной замене строк. Моя функция производит глобальную замену, в качестве параметров поиска и замены передаются как строки, так и массивы: srch[0] -> repl[0], srch[1] -> repl[1], . или srch[0] -> rep, srch[1] -> rep, . В последних двух параметрах можно указать, что вставить перед и после заменяемого фрагмента.

function strr(txt, search, replace, insbefore, insafter) < if (!(search && replace)) return txt; var i, txt1, sitem, ritem; if (!insbefore) insbefore = ''; if (!insafter) insafter = ''; // приводим параметры поиска и замены к массивам if ((typeof search) != 'object') search = [search]; if ((typeof replace) != 'object') replace = [replace]; // длина массива замены должна быть не меньше длины массива поиска if (replace.length < search.length) < ritem = replace[replace.length - 1]; for (i = replace.length; i < search.length; i++) < replace.push(ritem); >> // ищем и заменяем for (i = 0; i < search.length; i++) < sitem = search[i]; ritem = insbefore + replace[i] + insafter; txt1 = ''; while (txt1 != txt) < txt1 = txt; txt = txt1.replace(sitem, ritem); >> return txt; >
msg = strr(msg, '\n', '
'); msg = strr(msg, '[hr]', '
'); msg = strr(msg, ['[b]', '[i]', '[u]', '[s]'], ['', '', '', '']); msg = strr(msg, ['[/b]', '[/i]', '[/u]', '[/s]'], ['', '', '', '']); msg = strr(msg, ['[left]', '[center]', '[right]'], ['left', 'center', 'right'], '
'); msg = strr(msg, ['[/left]', '[/center]', '[/right]'], '
'); msg = strr(msg, ['
', '

'], ['
', '
']); msg = strr(msg, ['

', '

'], '
');

Кстати, в примере использования строки 3-4 можно записать еще так:

msg = strr(msg, ['[b]', '[i]', '[u]', '[s]'], ['b', 'i', 'u', 's'], ''); msg = strr(msg, ['[/b]', '[/i]', '[/u]', '[/s]'], ['b', 'i', 'u', 's'], '');

Привет всем. Подскажите как можно осуществить такую штуку. Нужно, что бы при входе пользователя после ввода его пароль заменялся автоматически на другой.

Здравствуйте! Помогите пожалуйста со скриптом. Есть сайт с музыкой, все названия песен в одну строку. При переносе через код удаляются начальные ковычки и скобки. Ничего придумать больше т.к. не знаю js. Для наглядного примера ссылочка

//может вот так
for (var i = 0; i < 20; i++) var textid = $(".titlid").eq(i).html();
var textid2 = textid.split(‘-‘);
// var textid2 = textid.replace (/\- |\(|\»/ , ‘

возможно из одной строки убирать части которые переданы в другую переменную

var namb=3456284563991
var cl=345
var li2=3991

var cena2pl=namb.replace(/\cl/g, «»);
alert(cena2pl);

var namb2=cena2pl.replace(/\li2/g, «»);
alert(namb2); \\\нужен результат 628456

теперь я не умру с голоду

Здравствуйте.
Подскажите, как при помощи replace (или др) в строке «asdfg 123 mn=bv 587» удалить строку «mn=» и еще 2 символа после нее, т.е. как удалить «mn=bv», но «bv» — неизвестна?

var str = «asdfg 123 mn=bv 587»
alert(str.replace(/mn=./, »)) // если известно, что ровно 2 ЛЮБЫХ символа (буквы, цифры и т.д)
alert(str.replace(/mn=.+\s/, ‘ ‘)) // аналогично, но предполагая, что bv произвольной длины, не содержит пробела и следом есть пробел

Есть допустим текст: «г. Москва, ул. Ленина 5»

Как в этом тексте сделать замену на: «г.

Но! С одним условием — поиск по тексту, мы производим словом «москва», т.е. москва — с маленькой буквой, а на выходе текст должен остаться оригинальным, но со вставкой тегов

Извините, но написано так, что нуля понять, что она вообще делает и каким образом, мягко говоря, затруднительно.

Ребят, а как тут поступить?
Вот эту строку: 88002004860
нужно привести к такому виду: 8 800 200 48 60

Почему
str.replace(«/\»/g»,»») не работает?
Хочу удалить все двойные кавычки в строке.

Большое спасибо за статью. ♥

Подскажите как удалить весь закоментированный текст через JS
В php такой «html.replace(//g, »);» метод работает, а в JS нифига не удаляет!?

А где можно почитать подробнее о синтаксисе всех этих слешей, вопросов и тд? Как я понимаю, он используется не только в replace

Источник

JavaScript String replace()

The replace() method searches a string for a value or a regular expression. The replace() method returns a new string with the value(s) replaced. The replace() method does not change the original string.

Note

See Also:

Syntax

Parameters

Parameter Description
searchValue Required.
The value, or regular expression, to search for.
newValue Required.
The new value (to replace with).

Return Value

More Examples

A global, case-insensitive replacement:

A function to return the replacement text:

let text = «Mr Blue has a blue house and a blue car»;
let result = text.replace(/blue|house|car/gi, function (x) return x.toUpperCase();
>);

Browser Support

replace() is an ECMAScript1 (ES1) feature.

ES1 (JavaScript 1997) is fully supported in all browsers:

Chrome Edge Firefox Safari Opera IE
Yes Yes Yes Yes Yes Yes

Unlock Full Access 50% off

COLOR PICKER

colorpicker

Join our Bootcamp!

Report Error

If you want to report an error, or if you want to make a suggestion, do not hesitate to send us an e-mail:

Thank You For Helping Us!

Your message has been sent to W3Schools.

Top Tutorials
Top References
Top Examples
Get Certified

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Источник

Читайте также:  Python driver find element by xpath
Оцените статью