2007. december 2., vasárnap

How to remove characters from a string


Problem/Question/Abstract:

We need a workable function that can strip embedded characters (single qoutes, double quotes, etc.,) from within string vars.

Answer:

Solve 1:

Here is a general method to remove characters from a string:


type
  TCharSet = set of Ansichar;

procedure RemoveCharacters(var S: AnsiString; const characters: TCharset);
var
  i: Integer;
begin
  for i := Length(S) downto 1 do
    if S[i] in characters then
      delete(S, i, 1);
end;


In your case you would call it as:


RemoveCharacters(aString, [' ']);


There are certainly faster ways to implement this but unless you call the procedure some ten-thousand times in a loop I would not worry about that.


Solve 2:

function RemoveCharsFromString(const TheString: string; const CharsToRemove: array
  of Char): string;
var
  i:
  Integer;
begin
  Result := TheString;
  for i := Low(CharsToRemove) to High(CharsToRemove) do
  begin
    Result := StringReplace(Result, CharsToRemove[i], '', [rfReplaceAll]);
  end;
end;


Solve 3:

type
  TSetOfChar = set of char;

function RemoveCharsFromString(const TheString: string;
  const CharsToRemove: TSetOfChar): string;
var
  i, j: Integer;
begin
  SetLength(Result, length(TheString));
  j := 0;
  for i := 1 to length(TheString) do
  begin
    if not (TheString[i] in CharsToRemove) then
    begin
      inc(j);
      Result[j] := TheString[i];
    end;
  end;
  SetLength(Result, j);
end;

Nincsenek megjegyzések:

Megjegyzés küldése