Как удалить пустые строки в тексте?



  • Я наверное спрошу глупый вопрос, но уже битые пару часов не могу понять, как решить задачу.

    Есть такой текст:

    Пример пример пример
    пустая строка
    пустая строка
    Пример пример пример
    пустая строка
    Пример пример пример
    пустая строка
    пустая строка
    пустая строка
    пустая строка

    Как удалить пустые строки так, чтобы осталось ПО ОДНОЙ пустой строке после каждой не пустой строки? Иными словами, как получить такой результат:

    Пример пример пример
    пустая строка
    Пример пример пример
    пустая строка
    Пример пример пример
    пустая строка



  • @Вениамин Есть модуль String, там можешь что то слепить, есть работа со списками, список в файл и обратно и.т.д.. Не обязательно что то удалять, можно просто взять непустые строки и между ними засунуть пустые строки, нахрена вы все усложняете себе.

    Еще вопрос: вам обязательно это все делать в BAS? Лично я, когда у меня есть какой то файл с данными, который нужно перевести к другому формату, у меня не возникает мысли это делать с помощью BAS.. Что за бред. Есть RegexBuddy, есть Notepad ++ с плагинами, есть старинный никому неизвестный текстовый редактор Tea, есть язык программирования (2 часа времени ты мог потратить на изучение python, этого хватило бы, чтобы решить эту задачу и в нагрузку получить знания основы программирования)



  • @serrgo может так и получилось бы, ну не знаю.

    Я привел примитивный пример. А теперь представим что у нас вместо слов "пример пример пример" полноценные абзацы текста. И после них всегда разное количество пустых строк. Допустим я переведу массив в строку. Как мне потом вставить в нужных местах пропуски?

    Если я выбрал работать с БАСом, то вероятно мне нужна автоматизация. А если я буду пользоваться сторонними программами, то тогда теряется весь смысл автоматизированного проекта :) Тот пример который я привел - это один из этапов большого скрипта. То есть после выполнения действий с пустыми строками данные пойдут дальше обрабатываться.



  • @Вениамин said in Как удалить пустые строки в тексте?:

    Если я выбрал работать с БАСом, то вероятно мне нужна автоматизация.

    Бас это автоматизация браузера, а не каждого вашего чиха. И в нем достаточно встроенных инструментов для реализации сопутствующих задач.



  • @Вениамин said in Как удалить пустые строки в тексте?:

    То есть после выполнения действий с пустыми строками данные пойдут дальше обрабатываться.

    Тогда выбор BAS для этой задачи понятен.
    Если разное количество строк у тебя, то скорее всего нужно использовать регулярки



  • @UserTrue к чему этот комментарий?



  • @serrgo идея с переводом массива в строку вроде неплохая. Если получится, потом отпишу здесь как решил проблему. В любом случае спасибо за участие :)



  • @Вениамин said in Как удалить пустые строки в тексте?:

    @UserTrue к чему этот комментарий?

    Хм, извините привычка читать по диагонали. Показалось, что вы возмущены тем, что в БАС нет готового способа для вас ))



  • @Вениамин Примерно так можно

    [[LIST]] = [[LIST]].filter(function(row,i, arr){
    	return arr[i] !== '' || arr[i-1] !== ''
    })
    

    Для теста:

    [
      'Строка 1',
      '',
      '',
      'Строка 2',
      '',
      'Строка 3',
      '',
      '',
      '',
      ''
    ].filter(function(row,i, arr){
    	return arr[i] !== '' || arr[i-1] !== ''
    })
    


  • @UserTrue ТЫСЯЧА БЛАГОДАРНОСТЕЙ!!! То что нужно! Ух, вот я замаялся с этой проблемой! Огромное спасибо!

    p.s. а Вы не могли бы мне простым языком сказать, как этот код получился? Ну или может ссылку на статью сможете дать, чтобы я почитал да познал дзен :)



  • @Вениамин said in Как удалить пустые строки в тексте?:

    @UserTrue ТЫСЯЧА БЛАГОДАРНОСТЕЙ!!! То что нужно! Ух, вот я замаялся с этой проблемой! Огромное спасибо!

    p.s. а Вы не могли бы мне простым языком сказать, как этот код получился? Ну или может ссылку на статью сможете дать, чтобы я почитал да познал дзен :)

    Это обычная js функция filter должа возвращать true если элемент оставить и false если удалить.
    В данном случае arr[i] !== '' || arr[i-1] !== '' вернет true если элемент не пустая строка или если приведущий элемент не пустая строка.



  • @UserTrue Спасибо еще раз!


Log in to reply