Как убрать лишнюю строку при вводе текста из переменной

hyprvenm

Client
Регистрация
03.03.2020
Сообщения
13
Благодарностей
1
Баллы
3
Здравствуйте, проблема такова: в списке есть несколько строк, их я через подсписок и переменную ввожу в поле, но если поставить разделитель новая строка или указанный в списке, то между двумя строками будет лишняя (курсор на фото), необходимо как-то её убрать
51972
 

hyprvenm

Client
Регистрация
03.03.2020
Сообщения
13
Благодарностей
1
Баллы
3
И есть ли другой способ вставки текста в поле на сайте, кроме переменной?
 

zarufakis

Client
Регистрация
22.03.2019
Сообщения
1 530
Благодарностей
886
Баллы
113
Список - Удалить дубли
или при взятии строки проверять не пустая ли она
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 767
Благодарностей
2 414
Баллы
113
Вам никто не может ответить потому, что запрос задан не корректно - как нам воспроизвести Вашу проблему?
На каком сайте вставляются данные (или мы сами должны предсказать где встречается такая проблема)?
Пример шаблона, который можно открыть, исправить и выслать назад предоставьте, если сложно описывать что и где происходит.
Если в списке были бы пустые строчки - то удаляются они элементарно примерно таким кодом:
Код:
List<string> list = new List<string>();
    list.Add("text");
    list.Add(string.Empty);
    list.Add("text");
    list.Add(string.Empty);
    list.Add("text");
    list.Add(string.Empty);
    list.Add("text");
    list.Add(string.Empty);
    
    foreach(string s in list) project.SendInfoToLog("in:" + s); // что было в списке до
    list = list.Where(x => !string.IsNullOrEmpty(x)).ToList();
    foreach(string s in list) project.SendInfoToLog("out:"+s); // что стало в списке после
Но, судя из Вашего сообщения у Вас там уже нет пустых строчек, Вы пытаетесь произвести какие-то манипуляции - вставить на каком-то сайте в какую-то форму, которая просто одевает каждую строчку в какие-то теги, из-за чего появляются пустые строчки. В этом же случае вероятно нужно посмотреть что именно происходит с текстом на сайте, а уже тогда пытаться разобраться как привести данные в переменной к нужному виду.
 

hyprvenm

Client
Регистрация
03.03.2020
Сообщения
13
Благодарностей
1
Баллы
3
На левом скрине изображено содержание списка "конец" и объединение элементов этого списка в переменную "info". На правом скрине значения из переменной "info" вставляется в поле для новой записи на сайте vk.com, создавая между двух строк лишнюю (на которой курсор). Пробовал в действии объединения элементов списка выбрать разделить новая строка или указанный в списке, но пустая строка все равно остается
51984
51983
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
19 515
Благодарностей
8 703
Баллы
113
Здравствуйте, проблема такова: в списке есть несколько строк, их я через подсписок и переменную ввожу в поле, но если поставить разделитель новая строка или указанный в списке, то между двумя строками будет лишняя (курсор на фото), необходимо как-то её убратьПосмотреть вложение 51972
Быстрее кто то сможет помочь, если сделаете тестовый пример шаблона с авторизацией в ВК.
Раньше обычно встречал обратную проблему с ВК - лепит все в одну строку, игнорируя переводы строк, а тут наоборот. :-)
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 767
Благодарностей
2 414
Баллы
113
Вот, вижу работает корректно. Разделитель \n
C#:
List<string> list = new List<string>();
    list.Add("text");
    list.Add(string.Empty);
    list.Add("text");
    list.Add(string.Empty);
    list.Add("text");
    list.Add(string.Empty);
    list.Add("text");
    list.Add(string.Empty);

    foreach(string s in list) project.SendInfoToLog("in:" + s);
    list = list.Where(x => !string.IsNullOrEmpty(x)).ToList();
    foreach(string s in list) project.SendInfoToLog("out:"+s);
string text =  string.Join("\n", list);

HtmlElement he = instance.GetTabByAddress("popup").GetDocumentByAddress("0").FindElementById("post_field_composer_wdd_term");
if (he.IsVoid) {
    he = instance.GetTabByAddress("popup").GetDocumentByAddress("0").FindElementByAttribute("input:hidden", "fulltag", "input:hidden", "text", 0);
}
if (he.IsVoid) return -1;
instance.WaitFieldEmulationDelay();
he.SetValue(text, instance.EmulationLevel, false);
Скриншот:
1584284457527.png
 
  • Спасибо
Реакции: Sergodjan

hyprvenm

Client
Регистрация
03.03.2020
Сообщения
13
Благодарностей
1
Баллы
3
Объясните, пожалуйста, что нужно написать в свой разделитель, ибо в коде я вообще не шарю. Если нужно, шаблон я прикрепил
 

Вложения

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 767
Благодарностей
2 414
Баллы
113
Объясните, пожалуйста, что нужно написать в свой разделитель, ибо в коде я вообще не шарю. Если нужно, шаблон я прикрепил
Код подправил, чтобы было на всякий пожарный вместе с заходом на нужную страничку, кликом по форме, и уже потом вводим текст.
Ваш шаблон подправить не могу - версия слишком крутая для меня.
Но, в качестве разделителя попробуйте поставить \n - должно сработать (в коде точно срабатывает, а вот как в стандартных кубиках - нужно проверить).
51993

C#:
List<string> list = new List<string>(); // создали список
    list.Add("text"); // добавили строчку в список
    list.Add(string.Empty); // добавили пустую строчку в список
    list.Add("text"); // добавили строчку в список
    list.Add(string.Empty);// добавили пустую строчку в список
    list.Add("text");// добавили строчку в список
    list.Add(string.Empty);// добавили пустую строчку в список
    list.Add("text");// добавили строчку в список
    list.Add(string.Empty);// добавили пустую строчку в список
  
    foreach(string s in list) project.SendInfoToLog("in:" + s); // перебрали список и вывели каждую строчку в лог
  
    list = list.Where(x => !string.IsNullOrEmpty(x)).ToList(); // удалили пустые строчки из списка
  
    foreach(string s in list) project.SendInfoToLog("out:"+s);// перебрали список и вывели каждую строчку в лог
  
string text =  string.Join("\n", list); // соединили строчки списка через разделитель \n в переменную текст
  
instance.ActiveTab.Navigate(@"https://vk.com/login"); // переходим на страничку профиля - подставить свой логин
System.Threading.Thread.Sleep(5 * 1000); // пауза на всякий пожарный случай
instance.WaitFieldEmulationDelay(); // ожидание эмуляции
instance.ActiveTab.FindElementById("submit_post_box").RiseEvent("focus", instance.EmulationLevel); // наводим фокус на нужный элемент формы
System.Threading.Thread.Sleep(5 * 1000); // пауза 5 секунд
instance.WaitFieldEmulationDelay(); // ожидание эмуляции
instance.ActiveTab.FindElementById("post_field").RiseEvent("onkeydown", instance.EmulationLevel); // событие нажатие кнопки мышки
    instance.ActiveTab.FindElementById("post_field").Click(); // клик по полю ввода
System.Threading.Thread.Sleep(5 * 1000); // пауза
instance.WaitFieldEmulationDelay(); // эмуляция задержки
instance.ActiveTab.FindElementById("post_field_composer_wdd_term").SetValue(text, instance.EmulationLevel, false); // ввод текста в поле с переменной текст
System.Threading.Thread.Sleep(5 * 1000); // пауза 5 секунд
 
Последнее редактирование:
  • Спасибо
Реакции: hyprvenm

hyprvenm

Client
Регистрация
03.03.2020
Сообщения
13
Благодарностей
1
Баллы
3
Извиняюсь, но кода я не понимаю в принципе. Нельзя ли поставить разделитель в кубике (\n не работает)
 

hyprvenm

Client
Регистрация
03.03.2020
Сообщения
13
Благодарностей
1
Баллы
3
Код подправил, чтобы было на всякий пожарный вместе с заходом на нужную страничку, кликом по форме, и уже потом вводим текст.
Ваш шаблон подправить не могу - версия слишком крутая для меня.
Но, в качестве разделителя попробуйте поставить \n - должно сработать (в коде точно срабатывает, а вот как в стандартных кубиках - нужно проверить).
Посмотреть вложение 51993
C#:
List<string> list = new List<string>(); // создали список
    list.Add("text"); // добавили строчку в список
    list.Add(string.Empty); // добавили пустую строчку в список
    list.Add("text"); // добавили строчку в список
    list.Add(string.Empty);// добавили пустую строчку в список
    list.Add("text");// добавили строчку в список
    list.Add(string.Empty);// добавили пустую строчку в список
    list.Add("text");// добавили строчку в список
    list.Add(string.Empty);// добавили пустую строчку в список
 
    foreach(string s in list) project.SendInfoToLog("in:" + s); // перебрали список и вывели каждую строчку в лог
 
    list = list.Where(x => !string.IsNullOrEmpty(x)).ToList(); // удалили пустые строчки из списка
 
    foreach(string s in list) project.SendInfoToLog("out:"+s);// перебрали список и вывели каждую строчку в лог
 
string text =  string.Join("\n", list); // соединили строчки списка через разделитель \n в переменную текст
 
instance.ActiveTab.Navigate(@"https://vk.com/login"); // переходим на страничку профиля - подставить свой логин
System.Threading.Thread.Sleep(5 * 1000); // пауза на всякий пожарный случай
instance.WaitFieldEmulationDelay(); // ожидание эмуляции
instance.ActiveTab.FindElementById("submit_post_box").RiseEvent("focus", instance.EmulationLevel); // наводим фокус на нужный элемент формы
System.Threading.Thread.Sleep(5 * 1000); // пауза 5 секунд
instance.WaitFieldEmulationDelay(); // ожидание эмуляции
instance.ActiveTab.FindElementById("post_field").RiseEvent("onkeydown", instance.EmulationLevel); // событие нажатие кнопки мышки
    instance.ActiveTab.FindElementById("post_field").Click(); // клик по полю ввода
System.Threading.Thread.Sleep(5 * 1000); // пауза
instance.WaitFieldEmulationDelay(); // эмуляция задержки
instance.ActiveTab.FindElementById("post_field_composer_wdd_term").SetValue(text, instance.EmulationLevel, false); // ввод текста в поле с переменной текст
System.Threading.Thread.Sleep(5 * 1000); // пауза 5 секунд
Разобрался в коде, изменил значения, теперь все работает. Огромное спасибо вам за помощь и терпение)
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)