Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.08.2019, 23:45
Интересующийся
Отправить личное сообщение для pautinaweb Посмотреть профиль Найти все сообщения от pautinaweb
 
Регистрация: 01.06.2010
Сообщений: 12

Много кода в скрипте
Помогите правильно написать функцию.
Мне надо нужно из строки удалить:
  1. Удалить пробелы за и после запятых (,)
  2. Удалить пробелы за и после прямого слеша (|)
  3. Повторяющиеся двойные запятые (,,)
  4. Повторяющиеся двойные символы слеша (||)
  5. Удалить запятую перед слешем (,|)
  6. Удалить слеши, пробелы или запятые в конце строки
  7. Ну и все лишние пробелы
на писал функцию по событию:
$("#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. Причина: Для наглядности что нужно
Ответить с цитированием
  #2 (permalink)  
Старый 29.08.2019, 01:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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.
Ответить с цитированием
  #3 (permalink)  
Старый 29.08.2019, 02:31
Интересующийся
Отправить личное сообщение для pautinaweb Посмотреть профиль Найти все сообщения от pautinaweb
 
Регистрация: 01.06.2010
Сообщений: 12

Ну это не совсем то, что мне нужно, самое главное для меня, это пробелы перед и после запятых, и слешей | убрать
Ответить с цитированием
  #4 (permalink)  
Старый 29.08.2019, 07:43
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от pautinaweb
самое главное для меня, это пробелы перед и после запятых, и слешей | убрать
Как вариант...
var str='слово1, слово2 ,слово3 , слово4| слово5 |слово6 | слово7';
alert(str.replace(/\s*([,|])\s*/g,'$1'));
Ответить с цитированием
  #5 (permalink)  
Старый 29.08.2019, 15:55
Интересующийся
Отправить личное сообщение для pautinaweb Посмотреть профиль Найти все сообщения от pautinaweb
 
Регистрация: 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);

Код сократился, но если кто знает как сделать в ону строку, было бы вообще супер!
Ответить с цитированием
  #6 (permalink)  
Старый 29.08.2019, 16:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от pautinaweb
как сделать в ону строку,
убрать все
;
        str = str
Ответить с цитированием
  #7 (permalink)  
Старый 29.08.2019, 20:41
Интересующийся
Отправить личное сообщение для pautinaweb Посмотреть профиль Найти все сообщения от pautinaweb
 
Регистрация: 01.06.2010
Сообщений: 12

Да это убрал, когда в функцию вставлял
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не отрабатывает функция в общем потоке кода DVV Events/DOM/Window 1 07.07.2019 16:05
скрыть из исходного кода часть javascript кода. javasc Javascript под браузер 10 12.03.2014 09:32
ускорение загрузки iframe кода karencho7777 Общие вопросы Javascript 3 21.11.2012 07:39
Много кода, как правильно розкладывать vlikin Общие вопросы Javascript 1 24.10.2012 14:01
Пример кода сохранения в базу html страницы генерированного посредством JavaScripts wayzer Серверные языки и технологии 2 06.09.2012 16:46