Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

Работа со строками   Найти похожие ветки 

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

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


 
Digitman ©   (2005-01-20 17:29) [1]

никак


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

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


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

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


 
Digitman ©   (2005-01-20 17:49) [4]


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


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

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

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

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

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


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

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


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

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


 
begin...end ©   (2005-01-20 17:55) [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 18:01) [8]

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;


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

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


 
begin...end ©   (2005-01-20 18:06) [10]

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

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

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


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


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


 
Knight ©   (2005-01-20 19:01) [11]

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;


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

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


 
Anatoly Podgoretsky ©   (2005-01-20 23:52) [13]

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



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
4-1103491919
pika
2004-12-20 00:31
2005.02.06
Запуск программы !!


1-1106317212
BFG9k
2005-01-21 17:20
2005.02.06
Событие изменения ширины колонки в TStringGrid


4-1103030917
Phantomouse
2004-12-14 16:28
2005.02.06
COM+HEX


1-1106572103
Wolffgang
2005-01-24 16:08
2005.02.06
circular unit reference


3-1105023510
naum
2005-01-06 17:58
2005.02.06
Шифрование баз данных