Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Удалить часть строки(с меня баланс :) (https://javascript.ru/forum/misc/43413-udalit-chast-stroki-s-menya-balans.html)

Boomerml 04.12.2013 13:53

Удалить часть строки(с меня баланс :)
 
Добрый день гуру!

в переменной возможны такие варианты.

1Вариант. - (#24174#||#22301#||#22298#||#22303#) && #14827# && #14543#
2Вариант. - #144357# && #14827# && (#24174#||#22301#||#22298#)

В идеале нужно удалить то что в скобках(с скобками включительно) и как бы внешний '&&'. т.е. чтобы осталось (если сделайте номер в лс)

1Вариант. - #14827# && #14543#
2Вариант. - #144357# && #14827#
*Подмечу их может быть много в конечном варианте - #144357# && #14827# && #18234# && #12324#

Или хотяб

1Вариант - && #14827# && #14543#
2Вариант. - #144357# && #14827# &&

Как я понимаю нужны спецсимволы в регулярном выражении которые я ещё к сожалению не освоил :( .
Спасибо за понимание! Очень жду оперативный ответ :)

Boomerml 04.12.2013 13:55

Нашёл какое то подобие в сети, но это не то что нужно... Может поймёте куда приблизительно копать...


Дело в том что внутри скобок могут быть и другие значения (пос.), (д.) и т.п.
s = "Санкт-Петербург(г.)"
"Санкт-Петербург(г.)"
s.replace(/\s*\([а-яА-Я\.]+\)$/g, "")
"Санкт-Петербург"

рони 04.12.2013 14:02

Boomerml,
var str = '(#24174#||#22301#||#22298#||#22303#) && #14827# && #14543#'
   reg = /[^#]+\(.*?\)|\(.*?\)[^#]+/
   str = str.replace(reg,'');
   alert(str);
   str = '#144357# && #14827# && (#24174#||#22301#||#22298#)';
   str = str.replace(reg,'');
   alert(str);

Boomerml 04.12.2013 14:14

Цитата:

Сообщение от рони (Сообщение 284483)
Boomerml,
var str = '(#24174#||#22301#||#22298#||#22303#) && #14827# && #14543#'
   reg = /[^#]+\(.*?\)|\(.*?\)[^#]+/
   str = str.replace(reg,'');
   alert(str);
   str = '#144357# && #14827# && (#24174#||#22301#||#22298#)';
   str = str.replace(reg,'');
   alert(str);

Спасибо. Работает за маленьким исключением. Код такая вешь, не проверишь не поймёшь, тут 3 вариант события после каких то действий...

var str = '(#24174#||#22301#||#22298#||#22303#)'

Чтоб он и на этот вариант распространился... Ну если мельком в голову нечего не придёт, поставлю условия...

ksa 04.12.2013 14:18

Предложу такой вариант...

var str='(#24174#||#22301#||#22298#||#22303#) && #14827# && #14543#';
alert(str.replace(/([^#]*)?\(.+\)([^#]*)?/g,''));
str = '#144357# && #14827# && (#24174#||#22301#||#22298#)';
alert(str.replace(/([^#]*)?\(.+\)([^#]*)?/g,''));

рони 04.12.2013 14:19

Boomerml,
var str = '(#24174#||#22301#||#22298#||#22303#)'
что на выходе должно быть ?

ksa 04.12.2013 14:21

Цитата:

Сообщение от Boomerml
var str = '(#24174#||#22301#||#22298#||#22303#)'

Это должно стать пустой строкой?
Мой вариант так может. :yes:

var str = '(#24174#||#22301#||#22298#||#22303#)';
alert('>'+str.replace(/([^#]*)?\(.+\)([^#]*)?/g,'')+'<');

ksa 04.12.2013 14:22

Цитата:

Сообщение от Boomerml
В идеале нужно удалить то что в скобках(с скобками включительно) и как бы внешний '&&'.

Цитата:

Сообщение от рони
что на выходе должно быть ?

Думаю, что пустая строка...

рони 04.12.2013 14:26

var str = '(#24174#||#22301#||#22298#||#22303#) && #14827# && #14543#'
   reg = /(^|[^#]+)\(.*?\)$|\(.*?\)[^#]+/
   str = str.replace(reg,'');
   alert(str);
   str = '#144357# && #14827# && (#24174#||#22301#||#22298#)';
   str = str.replace(reg,'');
   alert(str);
   str = '(#24174#||#22301#||#22298#||#22303#)';
   str = str.replace(reg,'');
   alert(str);

Boomerml 04.12.2013 14:28

Цитата:

Сообщение от ksa (Сообщение 284490)
Думаю, что пустая строка...

+ Кул

Теперь даже не знаю что делать :) Хотяяя :) допишу компоненту. Если вопросов не будет, то пополам! там немного осталось. остальное в лс.

Спасибо что откликнулись)


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