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

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

Работа со строками [D6, WinXP]


Алексей ©   (2005-01-20 17:20:00) 

Подскажите, как можно преобразовать строку: "Иванов Иван Иванович" в строку: "ИвановИИ"?


Anatoly Podgoretsky   (2005-01-20 23:52:00) [1]

Алексей   (20.01.05 17:41) [3]
Кто же это у вас так базу спроектировал.


Алексей   (2005-01-20 22:44:00) [2]

Огромное спасибо уважаемому Knight, все прекрасно заработало.


Knight   (2005-01-20 19:01:00) [3]

function GetFIO(Str:String):String;
var StrList:TStringList;
begin
 Result:='';
 StrList:=TStringList.Create;
 try
   StrList.Delimiter:=' ';
   StrList.DelimitedText:=Str;
   if StrList.Count=3 then begin
     Result:=StrList[0]+StrList[1][1]+StrList[2][1];
   end;
 finally
   StrList.Free;
 end;
end;


begin...end   (2005-01-20 18:06:00) [4]

> [9] Александр Иванов ©   (20.01.05 18:02)

Смотрим сообщения выше:

[2] REA   (20.01.05 17:35)
В смысле? Первое слово+ Первая после пробелабуква+ Первая после пробелабуква.


[3] Алексей   (20.01.05 17:41)
У меня огромная база данных и надо ФИО сотрудников преобразовать. Уважаемый REA правильно понялсмысл моего вопроса.


Даже более того: посмотрите на образец строки, приведённый автором вопроса в [0].


Александр Иванов   (2005-01-20 18:02:00) [5]

begin...end ©   (20.01.05 17:55) [7]
А если несколько пробелов?


Александр Иванов   (2005-01-20 18:01:00) [6]

function GetName(Str:string):string;
var i:integer;
begin
  i:=Pos(' ',Str);
  Result:=Copy(Str,1,i-1);//Получаем фамилию
  Str:=Trim(Copy(Str,i,Length(Str)-i));//Оставляем остаток
  Result:=Result+Str[1];
  i:=Pos(' ',Str);
  Str:=Trim(Copy(Str,i,Length(Str)-i));//Оставляем остаток
  Result:=Result+Str[1];
end;


begin...end   (2005-01-20 17:55:00) [7]

> [3] Алексей   (20.01.05 17:41)

uses
 StrUtils;
var
 S1, S2: String;
 P1, P2: Integer;
begin
 S1 := 'Иванов Иван Иванович';
 P1 := Pos(' ', S1) + 1;
 P2 := PosEx(' ', S1, P1) + 1;
 if (P1 > 0) and (P2 > 0) then
   S2 := Copy(S1, 1, P1 - 2) + S1[P1] + S1[P2];
end.


Алексей   (2005-01-20 17:51:00) [8]

Я думаю можно перебором всех букв с начала по условию, но как осуществить цикл перебора?


Алексей   (2005-01-20 17:50:00) [9]

Я думаю можно перебором всех букв с начала по условию, но как осуществить цикл перебора?


Digitman   (2005-01-20 17:49:00) [10]


> Алексей   (20.01.05 17:41) [3]


так вот, на халявку, в надежде на телепатов, вся программистская жизнь и пройдет)

а ну как телепата рядом не окажется, а ? что делать-то будешь ?

какое нафих еще преобразование, если "Иванов Иван Иванович" (1) - это одна строкпа, а "ИвановИИ" (2) - совершенно иная ? Учись требования свои излагать алгоритмическимязыком !

нет и не может быть в этом случае никакого преобразования.

а должен быть алгоритм, создающий строку вида (2) по определенным ТОБОЙ алгоритмическим правилам на основании данных в строке (1).


Алексей   (2005-01-20 17:41:00) [11]

У меня огромная база данных и надо ФИО сотрудников преобразовать. Уважаемый REA правильно понял смысл моего вопроса.


REA   (2005-01-20 17:35:00) [12]

В смысле? Первое слово+Первая после пробела буква+Первая после пробела буква.


Digitman   (2005-01-20 17:29:00) [13]

никак


Наверх

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