Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2014, 13:27   #1
HellMercenariess
Форумчанин
 
Аватар для HellMercenariess
 
Регистрация: 27.07.2009
Сообщений: 547
По умолчанию Угрохать точки, зяпятые и восклицания, при разделении строки

Помогите пожалуйста усовершенствовать этот способ разделения строки на слова так чтобы убирались знаки препинания и при этом слова не слипались:
Код:
type
   TData = Array of String;
   const obzon = '!,.-_';

function Split(S : String; C :Char): TData;

implementation

function Split(S : String; C :Char): TData;
var
   Data : TData;

   procedure DelC(var S : String);
   var
     i : Integer;
   begin
     i:=0;
   if Pos(obzon, S)=Length(s) then
     Delete(S,1,Length(s));


     while (Length(s) > 0) and (S[i+1]=C) do
       Inc(i);
     Delete(S, 1, i);
   end;

   procedure Splitting(S : String);
   var
     w : String;
     i : Integer;
     k : Integer;
   begin
     if Length(s) < 1 then
       Exit;
     if S[1] = C then
       DelC(S)
     else
     begin
       w:=''; i:=1;
       while ( s[i] <> C ) and ( i <= Length(S) ) do begin
         w:=w+S[i];
         Inc(i);
       end;
       Delete(S, 1, Length(w));
       k:=Length(Data);
       SetLength(Data,k+1);
       Data[k]:=w;
     end;
     Splitting(S);
   end;

begin
   Splitting(S);
   Result:=Data;
end;


Эта функция чужая, я ею давно уже пользуюсь, единвстенный её бок выдает слова со З\П.
"Виновник этого парада,он не дурак, ушел как надо!" Похороны панка.
HellMercenariess вне форума Ответить с цитированием
Старый 04.06.2014, 13:44   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Я плакаль
Код:
function Splitting(S: String): String;
const obzon = '!,.-_';
var i: Integer;
begin
  Result:=s;
  for i:=1 to Length(obzon) do Result:=StringReplace(Result,obzon[i],' ',[rfReplaceAll]);
  while Pos('  ',Result)>0 do Result:=StringReplace(Result,'  ',' ',[rfReplaceAll]);
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перл грамматика. ошибка в разделении операторов juliajuliajulia Помощь студентам 0 03.02.2013 22:33
Написать программу на СИ: дано массив с n строк.В каждой строке заменить знаки восклицания на точки. novyky@ukr.net Общие вопросы C/C++ 9 24.01.2013 17:00
Написать программу на СИ: дано массив с n строк.В каждой строке заменить знаки восклицания на точки. Костя555 Помощь студентам 2 28.12.2012 00:39
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Переход на новую строку при разделении текста (в С) Mr.Merso Помощь студентам 0 22.05.2011 19:23