Nettoyer une chaîne en supprimant les espaces multiples
Il est fréquent de devoir nettoyer une chaîne contenant des espaces superflus : espaces en début ou fin de ligne, ou plusieurs espaces consécutifs entre les mots.
Voici une fonction Delphi simple et efficace qui ramène tout cela à un espacement propre, avec un seul espace entre chaque mot.
function RemoveExtraSpaces(const InputText: string): string;
var
I: Integer;
CleanText: string;
InsideWord: Boolean;
begin
CleanText := '';
InsideWord := False;
I := 1;
while (I <= Length(InputText)) and (InputText[I] = ' ') do
Inc(I);
while I <= Length(InputText) do
begin
if InputText[I] <> ' ' then
begin
CleanText := CleanText + InputText[I];
InsideWord := True;
end
else if InsideWord then
begin
CleanText := CleanText + ' ';
InsideWord := False;
while (I + 1 <= Length(InputText)) and (InputText[I + 1] = ' ') do
Inc(I);
end;
Inc(I);
end;
if (Length(CleanText) > 0) and (CleanText[Length(CleanText)] = ' ') then
Delete(CleanText, Length(CleanText), 1);
Result := CleanText;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
RawText, TrimmedText: string;
begin
RawText := ' Hello world from Delphi ';
TrimmedText := RemoveExtraSpaces(RawText);
ShowMessage(TrimmedText); // "Hello world from Delphi"
end;Un petit clic (J'aime) qui fait plaisir !