Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.09.2010, 23:11
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
Печаль Свой функция DelStr

Здравствуйте форумчане
Мне надо сделать функцию удаления части строки НЕ по индексу (как функция delete), а по нужному символу (или букве) и до нужного символа (или буквы).
Объясняю, вот примерно, какой должен быть синтаксис функции:
Код:
1
function DelStr(S: String; What, WhatTo: String): String;
И например надо найти и удалить в тексте все буквы (если они есть), от "t" (например) и до "e" (например текст: "the cat", функция должна вернуть " cat" (убирается в нашем случае слово "the").
То есть надо удалять часть строки от и до выбранной буквы (а если нет одной из букв, то не удалять не чего).
Так же надо в функции предусмотреть удаление от нужной буквы до конца строки.

Вот примерно как то так. Есть идеи хоть у кого то?

ЗЫ Варианты наподобие таких не предлагать, т.к. это не подходит:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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  
Старый 22.09.2010, 23:32
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,093
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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  
Старый 23.09.2010, 15:05
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Спасибо!!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:12.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025