Кибор » Кибор - Интегрированная среда разработки ботов » О программе Кибор » Версия 5.95 Вырезание части текста с строки string

Страниц (1): [1]
 

1. Kibor - 03 Июня, 2021 - 10:26:41 - перейти к сообщению
cuttext вырезает часть текста с строки.
Без регулярного выражения.

Данный пример вырежет
 Цитата:
12345

CODE:
string s=cuttext( "qwert12345asdfg","rt", "as");
messagebox (s);


Первый параметр - строка с которой вырезать надо
Второй - часть текста после которого идет вырезаемый текст. Есть пустая строка, с начала.
Третий - часть текста перед которым идет вырезаемый текст. Если пустая, до конца.

Второй параметр ищется первый сначала.
Второй первый с конца.


=====================


Второй вариант использования cuttext

Данный пример вырежет
 Цитата:
234

CODE:
string s=cuttext( "qwert12345asdfg","rt", 1, "as", -1);
messagebox (s);


Первый параметр - строка с которой вырезать надо
Второй - часть текста после которого идет вырезаемый текст. Есть пустая строка, с начала.
Третий - смещение начала вырезаемого текста на количество символов.
Четвертый - часть текста перед которым идет вырезаемый текст. Если пустая, до конца.
Пятый - смещение окончания вырезаемого текста на количество символов.

=====================

Так же есть возможность первым, не обязательным параметром указать правила вырезания текста.
0 - Будет вырезан текст начиная от первого нахождения сверху ОТ ЧЕГО, кончая первым нахождением снизу ДО ЧЕГО
Больше 0 - Будет вырезан Указанный Номер Фрагмента начиная от нахождения сверху ОТ ЧЕГО, кончая нахождением сверху ДО ЧЕГО
Меньше 0 - Будет вырезан Указанный Номер Фрагмента начиная от нахождения снизу ОТ ЧЕГО, кончая нахождением снизу ДО ЧЕГО

Пояснение
0 - Вырежет максимальный текст ОТ ДО
2 - Вырежет Второй фрагмент ОТ ДО, начиная сверху
-2 Вырежет Второй фрагмент ОТ ДО, начиная снизу

CODE:
string
T="В этом тексте вырежем +++111-- и еще +++222-- также +++333-- и напоследок +++444-- и еще +++555-- не забудем";
string s;
messagebox (T);

s=cuttext(T, "+++", "--");// 111-- и еще +++222-- также +++333-- и напоследок +++444-- и еще +++555
messagebox (s);

s=cuttext(0, T, "+++", "--");// 111-- и еще +++222-- также +++333-- и напоследок +++444-- и еще +++555
messagebox (s);

s=cuttext(1, T, "+++", "--");// 111
messagebox (s);

s=cuttext(2, T, "+++", "--");// 222
messagebox (s);

s=cuttext(-1, T, "+++", "--");// 555
messagebox (s);

s=cuttext(-2, T, "+++", -2, "--", 2);// ++444--
messagebox (s);


Если в строке только одно вхождение:
То есть к примеру нам надо вырезать участок кода относящийся к фрагменту:
CODE:
__name">Баскетбол

в строке
CODE:
class="line-grid-header__name champ-header__name">Баскетбол. Австралия. NBL. Мужчины.</h2></div><button _ngcontent-mobile-ng-cli-c107="" class="champ-header__button">

И оно там одно, надо указать смещение назад минимум на 1 символ больше чем первая искомая подстрока.
 Цитата:
string T="class=^"line-grid-header__name champ-header__name^">Баскетбол. Австралия. NBL. Мужчины.</h2></div><button _ngcontent-mobile-ng-cli-c107=^"^" class=^"champ-header__button^">";
messagebox (T);
string s=cuttext(0, T, "__name^">Баскетбол", -18, "__name^">Баскетбол", 50);
messagebox (s);
2. Ilya001 - 03 Июня, 2021 - 11:15:57 - перейти к сообщению
Хорошая вещь!
3. YaPA - 27 Октября, 2021 - 14:12:06 - перейти к сообщению
Подскажите пожалуйста, как из строки " ' лассо ' лопата ' верстак ' автомобиль ' пин-ап " вынуть слова? ..в стринг массив..
4. Zireael - 27 Октября, 2021 - 17:43:44 - перейти к сообщению
 Цитата:
как из строки " ' лассо ' лопата ' верстак ' автомобиль ' пин-ап " вынуть слова?

CODE:
string Text = " ^' лассо ^' лопата ^' верстак ^' автомобиль ^' пин-ап ";
messagebox(Text);
string result[999];
int count = regexsearch(sizearray(result), #result[0], Text, "[a-zA-Zа-яА-ЯёЁ\-]+");
messagebox("Всего найдено слов: "+format(count));
for(int i=0; i<count; i++)
{
messagebox(result[i]);
}
5. YaPA - 27 Октября, 2021 - 23:49:50 - перейти к сообщению
Спасибо - работает! Это бот для игры "найди предмет".

Однако если предмет составной - всё рушиться...

" ' чайник ' конус ' помидор ' бумажный пакет ' лупа "

..а бывает и так распознаёт:

" ' розъ!ск ' бумажный пак{ ' канистра ' сетка ' ракетка "
6. Zireael - 28 Октября, 2021 - 03:06:32 - перейти к сообщению
CODE:
string Text = " ^' розъ!ск ^' бумажный пак{ ^' канистра ^' сетка ^' ракетка ";
messagebox(Text);
string result[999];
int count = regexsearch(sizearray(result), #result[0], Text, "(?<=\^' )[a-zA-Zа-яА-ЯёЁ\-! ]+");
messagebox("Всего найдено слов: "+format(count));
for(int i=0; i<count; i++)
{
messagebox(result[i]);
}
7. Kibor - 12 Января, 2022 - 01:09:55 - перейти к сообщению
Второй вариант использования cuttext

Данный пример вырежет
 Цитата:
234

CODE:
string s=cuttext( "qwert12345asdfg","rt", 1, "as", -1);
messagebox (s);


Первый параметр - строка с которой вырезать надо
Второй - часть текста после которого идет вырезаемый текст. Есть пустая строка, с начала.
Третий - смещение начала вырезаемого текста на количество символов.
Четвертый - часть текста перед которым идет вырезаемый текст. Если пустая, до конца.
Пятый - смещение окончания вырезаемого текста на количество символов.
8. Kibor - 18 Октября, 2023 - 03:07:17 - перейти к сообщению
Доработал cuttext
Появилась возможность первым, не обязательным параметром указать правила вырезания текста.
По умолчанию он 0
0 - Будет вырезан текст начиная от первого нахождения сверху ОТ ЧЕГО, кончая первым нахождением снизу ДО ЧЕГО
Больше 0 - Будет вырезан Указанный Номер Фрагмента начиная от нахождения сверху ОТ ЧЕГО, кончая нахождением сверху ДО ЧЕГО
Меньше 0 - Будет вырезан Указанный Номер Фрагмента начиная от нахождения снизу ОТ ЧЕГО, кончая нахождением снизу ДО ЧЕГО

Пояснение
0 - Вырежет максимальный текст ОТ ДО
2 - Вырежет Второй фрагмент ОТ ДО, начиная сверху
-2 Вырежет Второй фрагмент ОТ ДО, начиная снизу


CODE:
string
T="В этом тексте вырежем +++111-- и еще +++222-- также +++333-- и напоследок +++444-- и еще +++555-- не забудем";
string s;
messagebox (T);

s=cuttext(T, "+++", "--");// 111-- и еще +++222-- также +++333-- и напоследок +++444-- и еще +++555
messagebox (s);

s=cuttext(0, T, "+++", "--");// 111-- и еще +++222-- также +++333-- и напоследок +++444-- и еще +++555
messagebox (s);

s=cuttext(1, T, "+++", "--");// 111
messagebox (s);

s=cuttext(2, T, "+++", "--");// 222
messagebox (s);

s=cuttext(-1, T, "+++", "--");// 555
messagebox (s);

s=cuttext(-2, T, "+++", -2, "--", 2);// ++444--
messagebox (s);


Если в строке только одно вхождение:
То есть к примеру нам надо вырезать участок кода относящийся к фрагменту:
CODE:
__name">Баскетбол

в строке
CODE:
class="line-grid-header__name champ-header__name">Баскетбол. Австралия. NBL. Мужчины.</h2></div><button _ngcontent-mobile-ng-cli-c107="" class="champ-header__button">

И оно там одно, надо указать смещение назад минимум на 1 символ больше чем первая искомая подстрока.
 Цитата:
string T="class=^"line-grid-header__name champ-header__name^">Баскетбол. Австралия. NBL. Мужчины.</h2></div><button _ngcontent-mobile-ng-cli-c107=^"^" class=^"champ-header__button^">";
messagebox (T);
string s=cuttext(0, T, "__name^">Баскетбол", -18, "__name^">Баскетбол", 50);
messagebox (s);
9. Kibor - 18 Октября, 2023 - 22:16:36 - перейти к сообщению
Поправил cuttext
Можно указывать номер фрагмента, который надо вырезать.
Подробнее постом выше.

Powered by ExBB FM 1.0 Final