Очень простой маленький вопрос, но я не совсем понимаю, как это сделать.
Мне нужно заменить каждый экземпляр «_» на пробел, а каждый экземпляр «#» - пустым или пустым.
var string = '#Please send_an_information_pack_to_the_following_address:';
Я пробовал это:
string.replace('#','').replace('_', ' ');
Мне не очень нравятся подобные команды. Есть ли другой способ сделать это в одном?
javascript
jquery
Шеннон Хохкинс
источник
источник
Ответы:
Используйте оператор ИЛИ (
|
):Вы также можете использовать класс символов:
скрипка
Если вы хотите заменить хеш с одной вещью, а подчеркивание - с другой, то вам просто придётся соединиться. Тем не менее, вы можете добавить прототип:
Почему бы не цепь, хотя? Я не вижу ничего плохого в этом.
источник
#|_
это[#_]
, и вы можете также использовать+
для соответствия любых матчей подряд , чтобы улучшить производительностьstr.replace(/[+ -]/g,'');
просто поставьте пробел в середине.Цепочка это круто, зачем отказываться?
В любом случае, здесь есть еще один вариант замены:
Заменить выберет "" если соответствует == "#", "" если нет.
[Обновление] Для более общего решения вы можете сохранить замещающие строки в объекте:
источник
var regex = new RegExp( Object.keys(replaceChars).join("|"), "g");
string.replace(regex,function(match) {return replaceChars[match];})
Сделайте дополнительный шаг: это облегчает изменение replaceChars.Если вы хотите заменить несколько символов, вы можете вызвать
String.prototype.replace()
аргумент замены, являющийся функцией, которая вызывается для каждого совпадения. Все, что вам нужно, это объект, представляющий сопоставление символов, которое вы будете использовать в этой функции.Например, если вы хотите
a
заменить наx
,b
сy
иc
сz
, вы можете сделать что-то вроде этого:Выход :
234xyz567yyyyxz
источник
var
сconst
здесь. альтернатива для расширенной поддержки браузера:var s ='234abc567bbbbac'; s = s.replace(/[abc]/g, function(m) { return {'a':'x','b':'y','c':'z'}[m]; }); console.log(s);
var chars = {a:'1', b:'2', c:'3'}; var s = '123abc123'; var u = s.replace(/[abc]/g, function(m) { return chars[m]; }); WScript.echo(u);
Укажите
/g
(глобальный) флаг в регулярном выражении, чтобы заменить все совпадения вместо первого:Чтобы заменить одного персонажа одной вещью, а другого персонажа чем-то другим, вы не можете обойтись без двух отдельных вызовов
replace
. Вы можете абстрагировать его в функцию, как это сделал Doorknob, хотя я бы, вероятно, взял объект со старыми / новыми парами ключ / значение вместо плоского массива.источник
Вы также можете попробовать это:
find
относится к тексту, который нужно найти, иreplace
к тексту, который нужно заменить наЭто заменит символы без учета регистра. Чтобы сделать иначе, просто измените флажки Regex по мере необходимости. Например: для учета регистра заменить:
источник
Вы можете просто попробовать это:
это заменит., - и # на ваш replacechar!
источник
Вот простой способ сделать это без RegEx.
Вы можете создавать прототипы и / или кэшировать вещи по своему усмотрению.
источник
str.replace(/#|_/g,'')
sed
у команды или а - ля Unixtr
), это похоже на правильный ответ.Пожалуйста попробуйте:
заменить несколько строк
var str = "http://www.abc.xyz.com"; str = str.replace(/http:|www|.com/g, ''); //str is "//.abc.xyz"
заменить несколько символов
var str = "a.b.c.d,e,f,g,h"; str = str.replace(/[.,]/g, ''); //str is "abcdefgh";
Удачи!
источник
Вы также можете передать объект RegExp в метод замены, например:
Javascript RegExp
источник
replace
звонки - это не помогает избежать этого.yourstring = '#Please send_an_information_pack_to_the_following_address:';
замените "#" на "" и замените "_" пробелом
newstring2 - ваш результат
источник
var str = '#this #is__ __#a test###__';
что в этой строке есть несколько пробелов.Вот еще одна версия с использованием String Prototype. Наслаждайтесь!
источник
Я не знаю, насколько это поможет, но я хотел удалить
<b>
и</b>
из моей строкипоэтому я использовал
так что, в принципе, если вы хотите уменьшить количество персонажей и не тратить время, это будет полезно.
источник
Вот функция «безопасного HTML», использующая функцию многократной замены «уменьшить» (эта функция применяет каждую замену ко всей строке, поэтому зависимости между заменами значительны).
источник