Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Сново разделение строки...


Автор: V.Turecky 19.8.2002, 22:17
Здравствуйте. Не поможете разделить строку на три части?
Строка имеет вид - '... ... ...', то есть три числа, разделённые между собой пробелами. Числа могуть быть разные: одно-, двух- и трёхзначные. Я попыталься разделить, но что-то не ладиться:

var
Pat1,Pat2,Pat3, s: String;

//Читаю строку и заношу в переменную 's'
s := Reg.ReadString('Background');

//Разделяю строки (здесь всё нормально)
Pat1 := Copy(s, 0, pos(' ', s)-1);
//Здесь хуже
Pat2 := Copy(s, pos(' ' ,s)+1, pos(' ', s)+1);
//А здесь совсем плохо
Pat3 := Copy(s, pos(' ', s)+5, length(s));

//Здесь вывожу результат
ShowMessage(Pat1+' - '+Pat2+' - '+Pat3);

Автор: Vit 19.8.2002, 22:28
Посмотри, я здесь подобную задачу решил:

http://www.forum.vingrad.ru/cgi-bin/newforum/ikonboard.cgi?act=ST;f=2;t=2744

Вообще-то не хочется на такой вопрос отвечать - алгоритм простой до безобразия - надо просто сесть и аккуратно его реализовать:

Пока исходная строка не равна пустой делать:
 {
 взять то что до разделителя -> очередной член строки
 исходная строка := взять то что после разделителя
 }

И всё!

Автор: V.Turecky 19.8.2002, 22:45
Я посмотрел эту тему:
http://www.forum.vingrad.ru/cgi-bin....;t=2744

Честно сказать, если бы я знал, что оно и как, я бы на форуме не спрашивал. А файл справки по pos, length и Copy я листал. Но не могу сказать, что мне после этого всё стало ястно.

Автор: Vit 19.8.2002, 23:51
Алоритм вычисления я тебе дал, используй эти функции:

pos(s,s1) - возвращает первую позицию подстроки s в строке s1
pos('b','abcdabcd') вернёт 2

length - возвращает длину строки
length('abcdabcd') вернёт 8

Copy(s,i,j) - возвращает кусок строки s начиная с символа под номером i и длиной j
Copy('abcdabcd',2,3) вернёт 'bcd'

Мне не жалко, я могу код этот написать за 5 минут, только ты его просто вставишь и ничему не научишься. Сия задача настолько простая, что представляет идеальное упражнгение для тренировки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)