Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2012, 20:47   #1
prem1era
Пользователь
 
Аватар для prem1era
 
Регистрация: 16.11.2009
Сообщений: 33
По умолчанию Разбиение строки на две части

У меня есть строковая переменная в которой записано ' л.1, 11, 20, 3, 14, 15. Хорошо' или ' л. 22, 49, 50, 60, 61, 62'. Мне надо разделить это строку таким образом что бы в одной было 'л.1, 11, 20, 3, 14, 15' или 'л. 22, 49, 50, 60, 61, 62' а в другой 'Хорошо' или нечего не должно быть.
prem1era вне форума Ответить с цитированием
Старый 02.06.2012, 20:56   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Ищете вхождение "Хорошо" в строку.
Если есть - удаляете и создаете вторую строку со словом "Хорошо".
Если нет - ничего не делаете с первой строкой и создаете вторую пустую.
s-andriano вне форума Ответить с цитированием
Старый 02.06.2012, 21:07   #3
prem1era
Пользователь
 
Аватар для prem1era
 
Регистрация: 16.11.2009
Сообщений: 33
По умолчанию

'Хорошую' я привел как пример а там может быть разные слова а может и не быть а быть просто 'л.12,13' или 'л.1'

Код:
   
p:integer;
cl,cname:string;
 p := Length(cname) - Pos(' ', AnsiReverseString(cname))+ 1;
                cl := Copy(cname, 1, p); 
               cname := Copy(cname, p + 1, Length(cname) - p + 1);
Как сделать что бы он искал только первый пробел а не все встретившиеся

Последний раз редактировалось Stilet; 02.06.2012 в 23:17.
prem1era вне форума Ответить с цитированием
Старый 02.06.2012, 21:32   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от prem1era Посмотреть сообщение
'Хорошую' я привел как пример а там может быть разные слова а может и не быть а быть просто 'л.12,13' или 'л.1'
Это уже другая задача, условие которой противоречит исходному.
Если Вам нужно решение общей задачи, не следует просить решение частной.

Цитата:
Сообщение от prem1era Посмотреть сообщение
Код:
   
p:integer;
cl,cname:string;
 p := Length(cname) - Pos(' ', AnsiReverseString(cname))+ 1;
                cl := Copy(cname, 1, p); 
               cname := Copy(cname, p + 1, Length(cname) - p + 1);
Как сделать что бы он искал только первый пробел а не все встретившиеся
pos и так ищет только первое вхождение.
Попытайтесь повнимательней относиться к тому, как Вы формулируете вопросы.

Последний раз редактировалось Stilet; 02.06.2012 в 23:18.
s-andriano вне форума Ответить с цитированием
Старый 02.06.2012, 22:58   #5
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Искать вторую точку, не?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 02.06.2012, 23:17   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Искать вторую точку, не?
Или слово/фразу, начинающуюся с заглавной буквы?
Или первую точку после цифры?
Или первую букву после цифры?
А может, чисел ровно 6?

prem1era, теперь Вы видите, что по тому, что Вы написали, восстановить, что Вам нужно, совершенно невозможно?
Можно только гадать.
s-andriano вне форума Ответить с цитированием
Старый 02.06.2012, 23:23   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Полагаю автора устроит такое:
Код:
s:='л.1, 11, 20, 3, 14, 15. Хорошо';
i:=Length(s);
while (i>0)and(not (s[i] in ['0'..'9'])) do dec(i);
Первая часть:=copy(s,i,Length(s));
Вторая часть:=copy(s,1,i);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.06.2012, 23:35   #8
prem1era
Пользователь
 
Аватар для prem1era
 
Регистрация: 16.11.2009
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Полагаю автора устроит такое:
Код:
s:='л.1, 11, 20, 3, 14, 15. Хорошо';
i:=Length(s);
while (i>0)and(not (s[i] in ['0'..'9'])) do dec(i);
Первая часть:=copy(s,i,Length(s));
Вторая часть:=copy(s,1,i);
Слушай работает, но к слову почемуто он еще добавляет последнею цифру? т.е у меня получается '5Хорошо' и 'л.1, 11, 20, 3, 14, 15'
Как избавится от этой 5?

Последний раз редактировалось prem1era; 02.06.2012 в 23:49.
prem1era вне форума Ответить с цитированием
Старый 03.06.2012, 00:13   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
Первая часть:=copy(s,i+1,Length(s));
Ты бы... это... башкой то подумал. Башка то тебе для чего дана?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MainFrame на две части Sethii Visual C++ 1 03.10.2011 22:47
Asm. Разбивка строки на две части levis07 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 30.03.2010 14:30
Assembler TASM/ Разработать прогу:разбивающую каждое слово текстовой строки на две части levis07 Фриланс 5 20.11.2009 10:34
Разбиение исходника на части SimaoO Общие вопросы C/C++ 2 16.11.2008 15:08
Разбиение на части MAcK Общие вопросы .NET 4 18.09.2008 13:56