Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   вставить в .replace значение переменной? (https://javascript.ru/forum/misc/33270-vstavit-v-replace-znachenie-peremennojj.html)

deivan 16.11.2012 17:39

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

допустим, чтобы все удалить "а" из строки str, я бы написал
alert(str.replace(/a/g,"");)


а как написать то же, но для случая если удаляемый символ находится в переменной someVar?..

ruslan_mart 16.11.2012 17:41

var myvar = "a";
....replace(myvar, "");

devote 16.11.2012 17:43

var myvar = "a";
alert( str.replace( new RegExp( myvar, "g" ), "" ) );

deivan 16.11.2012 18:01

Цитата:

Сообщение от devote (Сообщение 216281)
var myvar = "a";
alert( str.replace( new RegExp( myvar, "g" ), "" ) );

перфект, то что нужно!!!

tenshi 17.11.2012 00:39

только сначала надо проэкранировать спецсимволы
https://github.com/nin-jin/PMS/blob/...BRegExp.jam.js

nerv_ 17.11.2012 02:02

Цитата:

Сообщение от tenshi
только сначала надо проэкранировать спецсимволы
https://github.com/nin-jin/PMS/blob/...BRegExp.jam.js

var x = '\w.a'.replace( /(?=.)/g, '\\' );
var z = new RegExp( x, 'g' );

alert( '1\w.a1'.replace( z, '' ) );

bot87 17.11.2012 09:13

а как можно запихнуть переменную в регулярное выражение
/var/
?

tenshi 17.11.2012 22:19

Цитата:

Сообщение от nerv_ (Сообщение 216338)
var x = '\w.a'.replace( /(?=.)/g, '\\' );
var z = new RegExp( x, 'g' );

alert( '1\w.a1'.replace( z, '' ) );

var x = 't.a'.replace( /(?=.)/g, '\\' );
var z = new RegExp( x, 'g' );

alert( '1t.a1'.replace( z, '' ) );

devote 17.11.2012 23:00

Ну дык экранировать нужно не все просто:
var x = 't.\\a';
var z = new RegExp( x.replace( /(?=\W)/g, '\\' ), 'g' );
  
alert( '1t.\\a1-1t.\\a1-1t.\\a1'.replace( z, '' ) );

nerv_ 17.11.2012 23:59

tenshi, devote, спасибо :)

deivan 19.11.2012 13:22

а не подскажите ли, как регуляркой убрать все повторяющиеся символы в строке (предположим, все символы - текстовые ascii, без спецсимволов)?..

devote 19.11.2012 13:38

var a = 'ппппррррииииввввеееетттт!!!!';
alert( a.replace( /([\s\S])(?=\1)/g, '' ) );

deivan 19.11.2012 14:14

ага!!!
а если речь идет о строке вида "прпипвевпт", т.е. если повторяющиеся символы разбросаны по строке не подряд?..

devote 19.11.2012 16:52

Цитата:

Сообщение от deivan
а если речь идет о строке вида "прпипвевпт",

такое регуляркой не исправишь.

Skipp 19.11.2012 17:18

deivan,
Вот мне интересно, ты сам сможешь убрать повторяющиеся символы в голове из вот этой строки: "абадаусбурбрад"?

Skipp 20.11.2012 13:48

deivan,
Интересно в чём же я балабол? В том, что я не явно показал глупость твоего вопроса?

deivan 20.11.2012 14:46

специалист -- даст понятный ответ по сути вопроса вопрошающего или дружески пояснит, почему вопрос некорректен.

балабол (флудер, тролль и т.д.) -- наплодит никому не нужную, неграмотную и неконструктивную критику самого вопроса, зачастую с переходом на обсуждение личности автора

tenshi 20.11.2012 15:08

вопрос из разряда "раз вы все такие умные, может и укусить себя за задницу сможете?"

Skipp 20.11.2012 15:27

Цитата:

Сообщение от deivan
специалист

Ну вообще-то и специалист может попусту болтать, это присуще всем и тебе в том числе.
Цитата:

Сообщение от deivan
неграмотную и неконструктивную критику самого вопроса

И в чём же моя критика не грамотная и не конструктивная, по моему после прочтения моего сообщения тебе сразу стало ясно в чём твоя ошибка, но видимо из-за того, что сообщение с издёвкой, то ты попросту решил поставить меня в статусы балабола, интересная логика выходит:)
Цитата:

Сообщение от deivan
наплодит никому не нужную

А ты уверен, что моя критика в такой форме не стала для тебя полезной, я почему то уверен, что стала?


Часовой пояс GMT +3, время: 08:58.