8c4d0793-082c-407d-81fb-3f9bfaa40a95-image.png
Вот это?
Я же приложил фаил.Он там описывает другой метод, как наоборот все записать в одну строку
Вот еще скриншот на всякий случай https://yadi.sk/i/O6K-KjSrzFj-GQ
@john_bradley said in Переносы строк. Сжатие пробелов:
переносами строк
https://community.bablosoft.com/topic/3115/как-разделить-такую-строку/9
список/разделить выбираете разделитель сами.
@john_bradley said in Переносы строк. Сжатие пробелов:
и сжатием пробелов
@uraabk said in Переносы строк. Сжатие пробелов:
Что бы убрать пробелы можно использовать .trim()
Т.е. надо распарсить все на строки через например разделитель <br/> потом удалять оставшиеся теги регуляркой и применять .trim()? А если будут разделители строк </p> как указать 2 разделителя для парснга строки?
Я немного другим способом попробовал это сделать, https://yadi.sk/i/9oRGOIKRuKpkrQ но не могу понять почему удаляется тег <a> вместе с текстом.
0_1543862548226_тест.xml
@john_bradley said in Переносы строк. Сжатие пробелов:
Здравствуйте. При выполнении действия "Xpath получить текст", текст пишется в одну строку и не сжимаются пробелы по краям. Подскажите как привести текст в нормальный вид со всеми переносами строк и сжатием пробелов. Теги переносов в html могут быть разные как br, так и p
Можно использовать регулярное выражение для "сжатия" пробелов:

Вот скрипт
@john_bradley
Если они рядом то хоть всю строку, но действие в списке, а не в инструментах. Но если они не рядом никак это разные списки будут.
У меня нет времени разбирать что вы там удаляли для конспирации, проект не открывается

Тег а это ссылка
тег а
Ничего не удалял, вот проект, не знаю почему не залился нормально https://yadi.sk/d/_2253V21Vp_Ikg
Я знаю что a href это ссылка, а то что находится между >< это текст https://yadi.sk/i/VvP4FkZ5DquhAQ
Ну раз нет времени и на этом спасибо.
@john_bradley Я не со зла посмотрел ведь) Правда хз что он но не запустился трижды перекачивал. Так ну теперь вижу. Ну он получает одну ссылку. А что именно вам надо? если вы про разделитель то тот который имел в виду я вот он можете писать там что хотите он по нему и будет делить на список. в отличии от инструментов вы не ограничены ":", ";", "," хоть пробелы разница лишь в том что и выдаст он список, а не переменные со значениями
ой вот он

@allive Я понял, что можно делить по любому разделителю, но только по одному, а если в одном тексте у меня будет стоять разделитель строки <br/> а в другом </p>, или в одном тексте сразу встретятся 2 разных разделителя, то такой метод как я понимаю не подойдет, по этому может есть какой-то более универсальный метод как отображать текст не в строку, а в нормальном виде со всеми переносами строк. Вот я что-то подобное пытаюсь сделать, но что-то не могу понять почему так https://yadi.sk/i/iXM-sua9LrhC0g получается? Наверное руки не от туда)
@john_bradley Универсального нет. Или дерибанить как предложил @Fox или xpath или самому привести все к нему. Заменять, а потом делить. Ведь способ @ruzne это замена, это не удаление. Можете в конструкторе например установить где и что заменять, там есть такой функционал, не обязательно кодить. Причем замять можете не раз и не два и не один элемент, а что захотите. Но это да универсально нет.
Блин таки заставили меня расковырял я это не текст для баса. Вот так сделайте и вот

//*[@class="description"] Получайте не xml_list, а xpath_text_list
Спасибо, что разъяснили. Жаль конечно что приходится мудрить и добавлять кучу действий казалось бы для такой элементарной задачи.
@john_bradley Для баса получать xml и получать text это разные действия. Он может получить текст из xml но только тот что имеет прямое отношение к тексту.
@john_bradley said in Переносы строк. Сжатие пробелов:
Спасибо, что разъяснили. Жаль конечно что приходится мудрить и добавлять кучу действий казалось бы для такой элементарной задачи.
html страница генерируется php скриптом (в основном), а его в свою очередь писал кодер, и для достижения своей цели, он тоже мог прибегнуть к разного рода костылям. Добавлять пробелы к тексту, чтобы выравнять его по элементу например. А когда получаешь этот текст из кода, то его придётся обрабатывать как необходимо.
@john_bradley said in Переносы строк. Сжатие пробелов:
если в одном тексте у меня будет стоять разделитель строки <br/> а в другом </p>
Если получать текст через xpath то оба этих тега выполнят только одну функцию - перенесут строку.
@fox said in Переносы строк. Сжатие пробелов:
Если получать текст через xpath то оба этих тега выполнят только одну функцию - перенесут строку.
Не совсем, бас будет все писать в одну строку, по крайней мере в моем примере это так https://yadi.sk/i/O6K-KjSrzFj-GQ Действие "Xpath получить текст" просто убирает теги в html, но не переносит текст если присутствуют теги переноса строки.
@allive said in Переносы строк. Сжатие пробелов:
Для баса получать xml и получать text это разные действия. Он может получить текст из xml но только тот что имеет прямое отношение к тексту.
В данном случае текст ссылки имеет отношение к тексту, например если указать действие xpath получить текст, он находит текст ссылки (в данном случае это "vk.cc/654646") https://yadi.sk/i/O6K-KjSrzFj-GQ потому-что это текст, а если применить получить xml и добавить к нему /text() то программа почему то считает, что это уже не текст, парадокс https://yadi.sk/i/iXM-sua9LrhC0g Вот я о чем.
@john_bradley said in Переносы строк. Сжатие пробелов:
он находит текст ссылки
Потому что так написано на странице, какая программа? При чем тут бас? Это правила xpath ну получите текст вашим в арубузе. Бас следует правилам xpath которые у него есть. Это сделано для вас упрощение, а вы зачем то требуя в условиях одно хотите получать другое. https://github.com/bablosoft/BAS/tree/master/Modules/Xpath/js
То что вы в арбузе добавляете как text() здесь реализовано просто разными действиями. Но иногда пейсатели сайтостроители тоже пишут одно а получаются другое. И потому бас умеет как и арбуз прощать ошибки кодерства. Но вот догадываться за вас он не обязан. Браузер тоже)
@allive Я говорю о bas, не грешу конечно на программу, просто интересно почему так получается. Получить каждый xml и добавит text() это практически то же самое что и получить текст xml, только на выходе получается массив текстовых строк, если вы говорите о правилах xpath. Тут я ошибок кодерства не заметил, есть xml:
<div id="3881504" class="description"> Вот первая строка. <br/><noindex><a href="https://vk.cc/654646/" class="link " target="_blank" rel="nofollow" title="https://vk.cc/654646">vk.cc/654646</a></noindex> вот сайт (вторая строка). <br/>Вот третья строка. <br/>Вот четвертая строка. <br/> </div>
в нем текст "vk.cc/654646", если получить каждую текстовую строку через "xpath получить кажый xml" таким xpath "//*[@class="description"]/text()" эта часть текста "vk.cc/654646" не отображается, если получать текст через "xpath получить текст" отображается, этот момент мне не ясен.
ХЗ почему так https://yadi.sk/i/Gk4FVosLhaqhFQ
@john_bradley Я вам все ответил. ответ вашей задаче теперь внимательно смотрите на теги.
Вам даже арбуз подсказывает

@allive Так это же текст https://yadi.sk/i/xmerAmVGkqKlfQ
Решено. Может кому пригодиться как перевести текст в нормальный вид со всеми переносами
var s = ([[XPATH_XML]]);
s = s.replace(/<br/>/g, "\r\n")
s = s.replace(/<br />/g, "\r\n")
s = s.replace(/<br>/g, "\r\n")
s = s.replace(/</p>/g, "\r\n")
s = s.replace(/<.*?>/g, "")
s = s.replace(/[" "]{3,}/g, "")
s = s.trim()
[[XPATH_TEXT]]=s