10.02.2013, 19:22
|
|
Прохожий
|
|
Регистрация: 23.08.2011
Сообщения: 20
Репутация: 10
|
|
:)
Код:
// стандарт строки 1,2,3,5,7
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;
// end for
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;
|