Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получить отдельные значения строки [D7]


ИгорУЛЬКА ©   (2010-01-27 12:04:00) 

Добрый день, Мастера. Допустим, есть строка "Потапов Семен Семеныч". Как проще получить по отдельности фамилию, имя и отчество. Пока на ум приходит только ручной разбор строки (Pos + Copy), но, чую, существует решение поэлегантней.


Smile   (2010-01-27 20:04:00) [1]

Неужели в начале 80-х не было "нужды" в паспортах?
Оформление на допуск происходило без соответствующих документов?
От  себя: в достоверности, не сомневаюсь
:)


12   (2010-01-27 17:52:00) [2]

^))


Jeer   (2010-01-27 15:03:00) [3]


> Медвежонок Пятачок ©   (27.01.10 12:34) [2]
>
> Допустим, есть строка "Потапов Семен Семеныч".
>
> а допустим есть строка "Остап Ибрагим Бей Оглы Бендер"
> и надо получить :
> "Остап"
> "Ибрагим Бей Оглы"
> "Бендер"


Молодец !

В качестве оффтопа..

Где-то так в начале 80-х, когда еще был жив военный институт в бухте Казачья, что в Крыму, полетели мы туда - я и старший товарищ.
В процессе оформления документов на допуск, кто-то допустил ошибку и в итоге появились три человека:
- я
- Шамиль Кули
- Заде Али Оглы

Нас вдвоем ( физ.лица ) мурыжили три дня, пока разбирались, что заявлены всего два человека: я и Шамиль Кули-заде Али оглы

Это реальная история :)


Anatoly Podgoretsky   (2010-01-27 14:18:00) [4]

А наш проще Stings.CommaText := Text;


Nucer   (2010-01-27 13:40:00) [5]

Мой вариант:
procedure Explode(Separator: Char; S: string; Strings: TStringList; Limit: Integer = 0);
var
 I, N: Integer;
 Start: Integer;
 Done: Boolean;
begin
 Strings.BeginUpdate;
 try
  Strings.Clear;
  if S = '' then Exit;
  N := 0;
  Start := 1;
  Done := False;
  repeat
    Inc(N);
    I := PosEx(Separator, S, Start);
    if (I = 0) or (N = Limit) then
      begin
        I := Length(S) + 1;
        Done := True;
      end;
    Strings.Add(Copy(S, Start, I - Start));
    Start := I + 1;
  until Done;
 finally
   Strings.EndUpdate;
 end;
end;


Не всегда нужна обработка кавычек и апострофов, которую нельзя отключить в ExtractStrings.


Anatoly Podgoretsky   (2010-01-27 13:21:00) [6]

Есть красивее, с помощью CommaText


Anatoly Podgoretsky   (2010-01-27 13:20:00) [7]

Элегантнее с помощью PosEX


Медвежонок Пятачок   (2010-01-27 12:34:00) [8]

Допустим, есть строка "Потапов Семен Семеныч".

а допустим есть строка "Остап Ибрагим Бей Оглы Бендер"
и надо получить :
"Остап"
"Ибрагим Бей Оглы"
"Бендер"


12   (2010-01-27 12:19:00) [9]

можно глянуть на
ExtractStrings

"В стандарте - нет такого. Возможно, есть где-нибудь в сторонних библиотеках, только быстрее и проще сделать цикл с Pos..."
ЮЗ на подобный вопрос


Наверх

Титульная страница Поиск, карта сайта Написать письмо