Автоматизация и боты

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (5): « 1 [2] 3 4 5 »   

> Описание: Строковые функции. Поиск, удаление, замена.
Kibor
Отправлено: 15 Марта, 2018 - 20:50:49
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Добавил функцию replacetext - производит поиск и замену подстроки.
Ее описание в первом посту.
 
 Top
Zireael
Отправлено: 16 Марта, 2018 - 01:52:32
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017  
Репутация: 585




Ещё бы добавить в deletetext (или отдельную функцию) возможность удалить всё кроме цифр. Переносы строки при этом оставить.
 
 Top
Kibor
Отправлено: 16 Марта, 2018 - 07:58:41
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Для этого надо спецсимволы добавить. Добавлю как будет время.
 
 Top
Dantes3000
Отправлено: 18 Марта, 2018 - 19:17:40
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016  
Репутация: 58




как сделать такое:

стр="типа текст";
стр2="большой типа текст в котором есть текст стр";
if(стр есть в стр2) {что-то сделать}


я понял...надо в findtext границы указывать "большой" и "в котором"...или как-то иначе?
 
 Top
Kibor
Отправлено: 18 Марта, 2018 - 19:29:25
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




пробелы тоже символы. учитывать их надо.

CODE:
string TEXT="большой типа текст в котором есть текст стр";
char CTEXT[1000];
int nom, siz;
strcpy(#CTEXT[0], TEXT);


if (findtext(#CTEXT[0], #nom, #siz, "большой" & "в котором")!=-1)
{
//messagebox(format(#CTEXT[nom], siz));
if (format(#CTEXT[nom], siz)==" типа текст ")
{
messagebox("что то сделать");
}
}
 
 Top
Skycrew
Отправлено: 20 Марта, 2018 - 02:23:36
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 123
Дата рег-ции: Июль 2014  
Репутация: 0




Вот этого я давно ждал. Большое спасибо!

Из пожеланий:
1) Было бы здорово добавить возможность указывать сразу строку string на вход (и в таком случае получать на выходе тоже string)
2) Было бы мега-круто добавить регулярные выражения!
 
 Top
Kibor
Отправлено: 20 Марта, 2018 - 07:41:51
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




2 в разработке. но нет времени закончить.
 
 Top
Skycrew
Отправлено: 23 Марта, 2018 - 00:36:26
Post Id



Пользователь
Мастер


Покинул форум
Сообщений всего: 123
Дата рег-ции: Июль 2014  
Репутация: 0




 Kibor пишет:
2 в разработке. но нет времени закончить.


Отлично! Буду ждать.
 
 Top
Kibor
Отправлено: 27 Марта, 2018 - 10:26:16
Post Id



Администратор
Эксперт


Покинул форум
Сообщений всего: 8217
Дата рег-ции: Март 2013  
Откуда: Одесса
Репутация: 357




Выкладываю на альфа тест регулярные выражения.
Пока только тест на баги. Функции не закончены.

Для вызова функции поиска в строке необходимо вызвать
findtexttest
Функция не подсвечивается.

Краткое описание.
Доступны константы:
CODE:
// NUM | RU | EN | MARK | SPEC | ALL | SPACE


Команды:
CODE:
/\ выделенное этими знаками будет отображаться в поиске.
По умолчанию границы - начало и конец найденного фрагмента.
Можно установить одну из меток. В таком случае будет отображаться от начала до метки или от метки до конца.
В последствие можно будеьт указывать несколько зон и они будут писаться в массив.

^ Знак исключения.
То есть ^NUM означает что любая цифра будет ошибкой.
^"абвгд"
Ставится перед словом. Не применяется к группе.

* Означает что символы в слове расматриваются как массив отдельных символов, а не как слово
*"аврора" означает что достаточно совпадения одной из букв этого слова
"аврора" необходимо точное вхождение всего слова
Для констант данный режим идет автоматически и не меняется.

! Означает что искомая фраза не может закончиться этим знаком даже если он присутствовал в середине слова.
milo@dom.hata.com.
"."!
Отсеет последнюю точку

[] групирует слова символы. Для истины достаточно совпадения одного из
[EN, NUM, *"-_"]

+ или число. Сколько необходимо совпавших символов или не известно.


Несколько примеров:
CODE:

string CTEXT="мыло первое:test_1@domen1tochka.com.Мыло@vtoroe второе:test_2@domen.mnogo.tochek.com."
+"мыло третье с ошибкой. Без зоны домена: test_3@error.финиш. Точки после мыла отсеются";
string t="-_!#$%&'*+/=?^`{|}~";//Эти знаки допускаются в мыле
string PR;//сюда пишет ответ
while (findtexttest (#CTEXT, #PR, [EN, NUM, *t]+, "@", [EN, NUM]+, ".", [EN, NUM, ".", "."!]+)==1)
{
messagebox ("!"+PR+"!");
}



string CTEXT="номер 52 телефона (097)-555 26 52 просто число 5 и число 78998434549 еще 097-555-26-52 и еще 097 555 26 52";
string t="-_!#$%&'*+/=?^`{|}~";//Эти знаки допускаются в мыле
string PR;//сюда пишет ответ
while (findtexttest (#CTEXT, #PR, ["(", NUM, ")"]+, [NUM, SPACE, "-", SPACE!]+)==1)
{
messagebox ("!"+PR+"!");
}


string CTEXT="текст этот внутри не покажет<>не покажет текст<>текст этот внутри покажет так"
+" как по 2 пары скобок по бокам<><>покажет текст<><>все";
string t="-_!#$%&'*+/=?^`{|}~";//Эти знаки допускаются в мыле
string PR;//сюда пишет ответ
while (findtexttest (#CTEXT, #PR, "<>"2, /ALL+\, "<>"2)==1)
{
messagebox ("!"+PR+"!");
}



string CTEXT="Найдет 2 мыла Васи. Вася имеет первое мыло Vasya@gmail.com. Петя имеет мыло petya@gmail.com. "
+"Вася имеет еще одно мыло Vaska-kot@gmail.com Точки после мыла отсеются. "
+"Вася еще имеет телефон 095 217 25. Но телефоне не мыло.";
string t="-_!#$%&'*+/=?^`{|}~";//Эти знаки допускаются в мыле
string PR;//сюда пишет ответ
while (findtexttest (#CTEXT, #PR, "Вася", ALL+, /[EN, NUM, *t]+, "@", [EN, NUM]+, ".", [EN, NUM, ".", "."!]\+)==1)
{
messagebox ("!"+PR+"!");
}




string CTEXT="Надо выбрать все телефоны без 2. Первый 097-555 76 51 Второй 097-555-26-52 Третий 027 525 26 52";
string t="-_!#$%&'*+/=?^`{|}~";//Эти знаки допускаются в мыле
string PR;//сюда пишет ответ
while (findtexttest (#CTEXT, #PR, [NUM, ^"2", SPACE, "-", SPACE!]11)==1)
{
messagebox ("!"+PR+"!");
}
 
 Top
Zireael
Отправлено: 27 Марта, 2018 - 15:22:03
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017  
Репутация: 585




Не лучше ли вынести обсуждение не законченной функции в отдельную тему? Кому оно надо читать потом о когда-то существовавших багах.
Потестил немного, в целом работает.
CODE:
string CTEXT="qwe 123 rty";
string PR;
while (findtexttest (#CTEXT, #PR, ALL+\, [NUM]+)==1) // всё до числа
{
messagebox (PR); // Второе сообщение лишнее.
}


Может уже есть что-то в планах, но внесу несколько предложений.
 Цитата:
+ или число. Сколько необходимо совпавших символов или не известно.

Добавить [NUM]2~5 или как-то так, т. е. число от 2 до 5 цифр или символов, в зависимости от синтаксиса.

Из-за того что * это 1 или больше (а не 0 или больше), как быть с ситуацией когда символ может как присутствовать, так и отсутствовать? Например: "123, Сумма: 456" и "123, Сумма:456". Найти число после "Сумма:", в одном случае есть пробел после "Сумма:", в другом нет.
Может добавить: ?"аврора" или ?SPACE. Т. е. 0 или больше. Получится "Сумма:", ?SPACE, /[NUM]+\

Планируется ли добавить символы начала и конца строки, границы слова?
 
 Top
Страниц (5): « 1 [2] 3 4 5 »
Сейчас эту тему просматривают: 3 (гостей: 3, зарегистрированных: 0)
« О программе Кибор »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by