function
NumParser2(numstr:
string
; rz:
char
=
','
):
string
;
var
s: TStringList; i:
integer
; ok :
boolean
;
begin
s := TStringList
.
Create;
ExtractStrings([rz],[
' '
],
PChar
(numstr),s);
result:=
''
;
ok :=
false
;
for
i:=s
.
Count-
2
downto
1
do
if
((s[i-
1
] =
'-'
)
or
(strtoint(s[i-
1
])+
1
= strtoint(s[i])))
and
((s[i+
1
] =
'-'
)
or
(strtoint(s[i+
1
])-
1
= strtoint(s[i])))
then
begin
s[i] :=
'-'
;
if
ok
then
s
.
Delete(i);
ok:=
true
;
end
else
ok:=
false
;
s
.
Delimiter:=rz;
result:=StringReplace(s
.
DelimitedText,rz+
'-'
+rz,
'-'
,[rfReplaceAll]);
s
.
free;
end
;
procedure
TForm1
.
Button1Click(Sender: TObject);
begin
ShowMessage(NumParser2(
'1,2,3,5,7'
));
ShowMessage(NumParser2(
'1,2,3,5,7,10,11,12,13'
));
ShowMessage(NumParser2(
'1,2,3,4,5,7,13,70,71,72,73,80'
));
end
;