Zireael |
Отправлено: 04 Февраля, 2019 - 01:52:28
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Вот уже минут 20 думаю как сделать, чтобы пробел в конце не копировался в массив.
Только в конце или вначале тоже?
CODE:string text="a (1).jpg "+formatic(35)+" 15:30 4.2.19 "+formatic(35)+" Строчка 1 +formatic(13)+ Строчка 2. "+formatic(35);
int i;
string array[3]; // сюда результат запишется
string r="[^"+formatic(35)+"]+"; // регулярное выражение
//messagebox(r);
int x=regexsearch(sizearray(array), #array[0], text, r);
//messagebox("Найдено совпадений: "+format(x));
if(x>0)
{
for(i=0; i<x; i++)messagebox("Длина строки: "+format(size(array[i]))+formatic(13)+formatic(10)+array[i]); // это можно убрать
for(i=0; i<x; i++)regexreplace(1, #array[i], array[i], "^ *(.+?) *$", "$1"); // удалить пробелы вначале и конце строки
for(i=0; i<x; i++)messagebox("Длина строки: "+format(size(array[i]))+formatic(13)+formatic(10)+array[i]);
} |
|
|
Dantes3000 |
Отправлено: 04 Февраля, 2019 - 02:08:23
|
Эксперт
Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016
Репутация: 58
|
Zireael пишет: Только в конце или вначале тоже?
В начале строки - название файла, поэтому из-за пробела ошибку выбивало, в начале там пробела нет, а в остальных случаях не критично.
Я просто последний символ удалил, меньше кода получилось
CODE:char ch[256];
strcpy(#ch[0], array[0]);
name_img=format(#ch[0], size(#ch[0])-1);
(Добавление)
Кстати, думал потом +formatic(13)+ в строке заменять на перенос, но так не работает, пришлось поменять на +перенос+
CODE:string text="a (1).jpg "+formatic(35)+" 15:30 4.2.19 "+formatic(35)+" Строчка 1 +formatic(13)+ Строчка 2. "+formatic(35);
string s=formatic(13);
//regexreplace(-1, #text, text, "+formatic"+formatic(40)+"13"+formatic(41)+"+", s); //не работает
regexreplace(-1, #text, text, "+formatic(13)+", s); //тоже
messagebox(text);
(Добавление)
а вообще, конечно, было бы проще удалить из строки пробелы перед и после #
Не знаю зачем я вообще их поставил |
|
|
Zireael |
Отправлено: 04 Февраля, 2019 - 02:25:02
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: в начале там пробела нет
Это никак не влияет, их вообще может не быть, вернёт всю строку ничего не удаляя.
Цитата: regexreplace(-1, #text, text, "+formatic(13)+", s); //тоже
Спец. символы надо экранировать, т. е. писать через обратный слеш \+, \(, \).
CODE:string text="a (1).jpg "+formatic(35)+" 15:30 4.2.19 "+formatic(35)+" Строчка 1 +formatic(13)+ Строчка 2. "+formatic(35);
string s=formatic(13);
messagebox(text);
regexreplace(1, #text, text, "\+formatic\(13\)\+", s); \\ заменит +formatic(13)+ на перенос строки
messagebox(text); |
|
|
|