28.08.2019, 23:45
|
Интересующийся
|
|
Регистрация: 01.06.2010
Сообщений: 12
|
|
Много кода в скрипте
Помогите правильно написать функцию.
Мне надо нужно из строки удалить: - Удалить пробелы за и после запятых (,)
- Удалить пробелы за и после прямого слеша (|)
- Повторяющиеся двойные запятые (,,)
- Повторяющиеся двойные символы слеша (||)
- Удалить запятую перед слешем (,|)
- Удалить слеши, пробелы или запятые в конце строки
- Ну и все лишние пробелы
на писал функцию по событию:
$("#ID").on('blur', function(){
var str = $(this).val();
str = str.replace(/\s+/g, ' ').trim();
str = str.replace(/\,,+/g, ',').trim();
str = str.replace(/\,+/g, ',').trim();
str = str.replace(/\s\,+/g, ',').trim();
str = str.replace(/\,\s+/g, ',').trim();
str = str.replace(/\s\|+/g, ',').trim();
str = str.replace(/\|\s+/g, '|').trim();
str = str.replace(/\|\s+/g, '|').trim();
str = str.replace(/\|\|+/g, '|').trim();
str = str.replace(/\,\|+/g, '|').trim();
str = str.replace(/,\s*$/, '');
str = str.replace(/\|*$/, '');
$(this).val(str.trim());
});
Вроде работает, но мне кажется это какой то бред))) в регулярках не разбираюсь особо((
Подскажите можно ли как то компактнее код сделать или может в JQuery какие то способы есть для этого более удобные.
То что нужно на примере
мне из этого:
слово слово, слово, слово слово|слово , ,слово слово ,слово ,|слово ,слово ,слово слово ,слово |
Нужно получить это:
слово слово,слово,слово слово|слово,слово слово,слово|слово,слово,сло во слово,слово
Последний раз редактировалось pautinaweb, 28.08.2019 в 23:49.
Причина: Для наглядности что нужно
|
|
29.08.2019, 01:32
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
pautinaweb,
<script>
var str = "слово слово, слово, слово слово|слово , ,слово слово ,слово ,|слово ,слово ,слово слово ,слово |";
document.write(str + "<br>")
str = str.trim().replace(/([\s|,]+)([^\s|,]|$)/g, function(a, b, c) {
return (!c ? "" : /\|/.test(b) ? "|" : /,/.test(b) ? "," : " ") + c
});
document.write(str);
</script>
Последний раз редактировалось рони, 29.08.2019 в 01:47.
|
|
29.08.2019, 02:31
|
Интересующийся
|
|
Регистрация: 01.06.2010
Сообщений: 12
|
|
Ну это не совсем то, что мне нужно, самое главное для меня, это пробелы перед и после запятых, и слешей | убрать
|
|
29.08.2019, 07:43
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,215
|
|
Сообщение от pautinaweb
|
самое главное для меня, это пробелы перед и после запятых, и слешей | убрать
|
Как вариант...
var str='слово1, слово2 ,слово3 , слово4| слово5 |слово6 | слово7';
alert(str.replace(/\s*([,|])\s*/g,'$1'));
|
|
29.08.2019, 15:55
|
Интересующийся
|
|
Регистрация: 01.06.2010
Сообщений: 12
|
|
Спасибо, за помощь сделал так:
var str='слово1, слово2 ,слово3 слово4 слово5, слово6 слово7,| слово8 слово9 слово10, слово11 |,слово12 , | слово13, слово14 слово15 |';
str = str.replace(/(,\s*$)|(\|*$)/, '');
str = str.replace(/(,\|+)|(\|,+)/g, '|');
str = str.replace(/\s*([,|])\s*/g,'$1').trim();
alert(str);
Код сократился, но если кто знает как сделать в ону строку, было бы вообще супер!
|
|
29.08.2019, 16:33
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
Сообщение от pautinaweb
|
как сделать в ону строку,
|
убрать все
;
str = str
|
|
29.08.2019, 20:41
|
Интересующийся
|
|
Регистрация: 01.06.2010
Сообщений: 12
|
|
Да это убрал, когда в функцию вставлял
|
|
|
|