![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Здравствуйте форумчане
![]() Мне надо сделать функцию удаления части строки НЕ по индексу (как функция delete), а по нужному символу (или букве) и до нужного символа (или буквы). Объясняю, вот примерно, какой должен быть синтаксис функции: Код:
function DelStr(S: String; What, WhatTo: String): String; То есть надо удалять часть строки от и до выбранной буквы (а если нет одной из букв, то не удалять не чего). Так же надо в функции предусмотреть удаление от нужной буквы до конца строки. Вот примерно как то так. Есть идеи хоть у кого то? ЗЫ Варианты наподобие таких не предлагать, т.к. это не подходит: Код:
function GetWord(Str,Smb:String; WordNmbr: Byte):String;
var
SWord: String;
StrLen,N: Byte;
begin
StrLen:=SizeOf(Str);
N:=1;
while ((WordNmbr >= N) and (StrLen <> 0)) do
begin
StrLen := Pos(Smb,str);
if StrLen <> 0 then
begin
SWord:=Copy(Str,1,StrLen-1);
Delete(Str,1,StrLen);
Inc(N);
end
else SWord:=Str;
end;
if WordNmbr <= N then Result:=SWord else Result:='';
end;
/// или такой:
function DelStr(S: String; What: String): String;
begin
Result := Copy(S, 1, Pos(What, S) - 1);
end;Прошу, помогите!!! Заранее спасибо! |
|
#2
|
|||
|
|||
|
Код:
uses strUtils;
function StringDelete(Str, AFrom, ATo : String; AToEnd : Boolean = false) : String;
var
iFrom, iTo : Integer;
begin
iFrom := Pos(AFrom,Str);
If AToEnd Then iTo := Length(Str) Else iTo := PosEx(ATo,Str,AFrom);
Result := Str;
If (iFrom > 0) And (iTo > 0)
Then Delete(Result,iFrom,iTo);
// Если удалять все вхождения, то можно сделать рукурсию:
// If Str <> Result Then Result := StringDelete(Str, AFrom, ATo, AToEnd);
end; |
|
#3
|
||||
|
||||
|
Спасибо!!!
|