function SetText(s: string): string; var i: Integer; begin i := 1; Result := ''; while i <= Length(s) do begin if s[i] <> ' ' then Result := Result + s[i] else begin Result := Result + ','; while s[i + 1] = ' ' do Inc(i); end; Inc(i); end; end;
function SetText(s: string): string; var i: Integer; begin s:=StringReplace(s,' ','',[rfReplaceAll]); for i:=1 to Length(s) do begin if i=Length(s) then Result :=Result + s[i] else Result :=Result + s[i] + ','; end; end;
function Get(const AString: string): string; var L: Integer; P, R, Src: PChar; begin L := Length(AString); Result := StringOfChar(#0, L); P := PChar(AString); Src := P; R := PChar(Result); while P - Src > L do begin if P^ = #32 then begin while (P + 1)^ = #32 do Inc(P); if (P + 1)^ <> #0 then R^ := ','; end else R^ := P^; Inc(P); Inc(R); end; SetLength(Result, R - PChar(Result)); end;
while P - Src > L do >>改成 while P - Src < L do没调试,自己试下。
//利用SQL写跟这个差不多,,
declare @t varchar(50) declare @i int declare @tt varchar(50) set @t='1 2 3 4 5 6 ' set @i=1 set @tt='' while @i<len( replace(rtrim(ltrim(@t)),' ','')) Begin set @tt=@tt+substring( replace(rtrim(ltrim(@t)),' ',''),@i,1)+',' set @i=@i+1 End select left(@tt,len(@tt)-1)/* 1,2,3,4,5 */
Create Function get_char(@t varchar(50)) returns varchar(50) Begin --declare @t varchar(50) declare @i int declare @tt varchar(50) --set @t='1 2 3 4 5 6 ' set @i=1 set @tt='' while @i<len( replace(rtrim(ltrim(@t)),' ','')) Begin set @tt=@tt+substring( replace(rtrim(ltrim(@t)),' ',''),@i,1)+',' set @i=@i+1 End return ( left(@tt,len(@tt)-1))Endselect dbo.get_char('1 2 3 4 5 6 ') /* 1,2,3,4,5 */
var str: string; strResult: string; begin strResult := ''; str := Memo1.Lines.Text; str := TrimLeft(str); while Pos(#32,str)<>0 do begin strResult := strResult + Copy(str,1,Pos(#32,str)-1)+ ','; Delete(str,1,Pos(#32,str)); str := TrimLeft(str); end; TrimRight(strResult); if strResult<>'' then strResult := strResult +str+ ','; Delete(strResult,Length(strResult),1); Memo2.Lines.Text := strResult; end;
function SetText(s: string): string;
var
i: Integer;
begin
i := 1;
Result := '';
while i <= Length(s) do
begin
if s[i] <> ' ' then
Result := Result + s[i]
else
begin
Result := Result + ',';
while s[i + 1] = ' ' do Inc(i);
end;
Inc(i);
end;
end;
var
i: Integer;
begin
s:=StringReplace(s,' ','',[rfReplaceAll]);
for i:=1 to Length(s) do
begin
if i=Length(s) then
Result :=Result + s[i]
else
Result :=Result + s[i] + ',';
end;
end;
var
L: Integer;
P, R, Src: PChar;
begin
L := Length(AString);
Result := StringOfChar(#0, L);
P := PChar(AString);
Src := P;
R := PChar(Result);
while P - Src > L do
begin
if P^ = #32 then
begin
while (P + 1)^ = #32 do Inc(P);
if (P + 1)^ <> #0 then
R^ := ',';
end else
R^ := P^;
Inc(P);
Inc(R);
end;
SetLength(Result, R - PChar(Result));
end;
>>改成
while P - Src < L do没调试,自己试下。
declare @i int
declare @tt varchar(50)
set @t='1 2 3 4 5 6 '
set @i=1
set @tt=''
while @i<len( replace(rtrim(ltrim(@t)),' ',''))
Begin
set @tt=@tt+substring( replace(rtrim(ltrim(@t)),' ',''),@i,1)+','
set @i=@i+1
End
select left(@tt,len(@tt)-1)/*
1,2,3,4,5
*/
Create Function get_char(@t varchar(50))
returns varchar(50)
Begin --declare @t varchar(50)
declare @i int
declare @tt varchar(50)
--set @t='1 2 3 4 5 6 '
set @i=1
set @tt=''
while @i<len( replace(rtrim(ltrim(@t)),' ',''))
Begin
set @tt=@tt+substring( replace(rtrim(ltrim(@t)),' ',''),@i,1)+','
set @i=@i+1
End
return ( left(@tt,len(@tt)-1))Endselect dbo.get_char('1 2 3 4 5 6 ')
/*
1,2,3,4,5
*/
str: string;
strResult: string;
begin
strResult := '';
str := Memo1.Lines.Text;
str := TrimLeft(str);
while Pos(#32,str)<>0 do begin
strResult := strResult + Copy(str,1,Pos(#32,str)-1)+ ',';
Delete(str,1,Pos(#32,str));
str := TrimLeft(str);
end;
TrimRight(strResult);
if strResult<>'' then strResult := strResult +str+ ',';
Delete(strResult,Length(strResult),1);
Memo2.Lines.Text := strResult;
end;