program SplitStringProgram;
{$mode delphi}{$H+}
uses
Classes;
function SplitString(const s, delims: string): TStringList;
var
temp: string;
i: Integer;
delimChars: set of Char;
begin
Result := TStringList.Create;
Result.StrictDelimiter := True;
{ Build a set of delimiter characters from the regex-like string }
delimChars := [];
for i := 1 to Length(delims) do
case delims[i] of
' ', ',', '.', ':', '-', '!', '\': delimChars := delimChars + [delims[i]];
end;
temp := s;
{ Replace each delimiter with a space }
for i := 1 to Length(temp) do
if temp[i] in delimChars then
temp[i] := ' ';
{ Split on spaces }
ExtractStrings([' '], [], PChar(temp), Result);
end;
var
s: string;
delims: string;
tokens: TStringList;
i: Integer;
begin
s := '-c, c++.. c#:: -java ,php...python pascal';
delims := '[ ,.:\-!]+';
tokens := SplitString(s, delims);
for i := 0 to tokens.Count - 1 do
Writeln(tokens[i]);
tokens.Free;
end.
{
run:
c
c++
c#
java
php
python
pascal
}