一行字a124,好人,坏人,0203,如何把这一行字每个逗号之间的字符串取出?
取出a124
好人
坏人
0203
取出a124
好人
坏人
0203
解决方案 »
- 关于一个类似于dbgird控件的问题
- 如何使DBGRID中的某一列的内容以一定的格式输出?
- 数据量在2万至3万,准备用两层C/s来做,数据库用SQL server ,工具用Delphi6.0,前台操作有10左右。方案是否可行?
- 帮帮忙!!quickreport问题??
- 菜鸟问题,如何设置相对路径
- 大家请进来看看这段程序!小弟有问题求教!
- 有谁用过nms(发送邮件)组件的,请进来。
- delphi7的serverSocket问题,请教高手!
- 如何在程序运行前一个密码输入框啊?:)谢谢!
- 广州的朋友看过来
- 新手入门三问
- 各位大哥可得帮帮我啊,为什么oracle库里字段类型是varchar类型的,在delphi里通过字符串类型就无法插入???/
ts:=Tstringlist.create;
ts.Delimiter:=',';
ts.DelimitedText:='a124,好人,坏人,0203'
showmessage(ts.text)
....
//1.根据源字符串和子串位置通过分隔符取字符子串,默认分割符为';'
function FnGetPartString(aSource:string;nPart:Integer;aSeparator:String=';'):string;
var
lnfor:integer;
lsstr:string;
begin
lnfor:=Pos(aSeparator,aSource);
if (lnfor=0) then
begin
Result:=aSource ;
exit;
end;
if nPart>1 then
begin
aSource:=Copy(aSource,lnfor+1,length(aSource));
lsstr:=FnGetPartString(aSource,nPart-1,aSeparator);
end
else if nPart=1 then
lsstr:=copy(aSource,1,lnfor-1); result:=lsstr;
end;
//2. 根据源字符串和分隔符取字符串中被分割符分割的字串个数function FnGetPartCount(aSource:String;aSeparator:String=';'):integer;
var
ln:integer;
begin
ln:=0;
if aSource='' then
begin
Result:=0;
exit;
end;
if Pos(aSeparator,aSource)>0 then
begin
aSource:=copy(aSource,Pos(aSeparator,aSource)+1,length(aSource));
ln:=FnGetPartCount(aSource,aSeparator)+1;
end
else
if Pos(aSeparator,aSource)=0 then
ln:=ln+1;
Result:=ln;
end;
====================================
例子: 取第2个字符串
fnGetPartString(YourString,2,',');
依次取出所有的字符串
var
I:Integer;
begin
listbox1.Items.Clear;
for I:=0 to fnGetPartCount(YourString,',') do
listbox1.Items.Add(fnGetPartString(YourString,i,','););
end;
L: TStringList;...L.CommaText := a;...
你是用的D7吧,今天我刚装D7,才发现TStringlist有这么两个属性,以前D6没有,哈哈这个功能好,以前我喜欢用StringReplace
----------------------------------------------------------------
花自飘零水自流,一种相思,两处闲愁。
此情无计可消除,才下眉头,又上心头。
----------------------------------------------------------------
var
ts:Tstringlist;
mm:array[0..3]of string;
i:integer;
begin
edit1.Text:='';
ts:=Tstringlist.create;
ts.Delimiter:=',';
ts.DelimitedText:='a124,好人,坏人,0203';
for i:=0 to 3 do mm[i]:=ts.Strings[i];
for i:=0 to 3 do edit1.Text:=edit1.Text +mm[i];
end;
引用:
>>ts.Delimiter:=',';
>>ts.DelimitedText:='a124,好人,坏人,0203'感谢,非常好用,有学了一招,哈哈哈
strlist: Tstringlist;
begin
strlist := SplitString('a124,好人,坏人,0203',',');
strlist[1]; //a124
strlist[2]; //好人
strlist[3]; //坏人
strlist[4]; //0203
end;
function SplitString(const source, flag: string): Tstringlist;
var
temp: string;
i: integer;
begin
if Trim(source)<>'' Then
begin
Result := Tstringlist.Create;
temp := source;
i := pos(flag, source);
while i > 0 do
begin
Result.Add(copy(temp, 0, i - 1));
delete(temp, 1, i);
i := pos(flag, temp);
end;
Result.Add(temp);
end
else
Result.Add('');
end;
): Integer;
你要的是不是这个功能,把字符串分割成字符串数组;
procedure GetListData(s: string; a: TStringList);
begin
a:= TStringList.Create ;
a.text := StringReplace(s, ',', #13#10, [...]);
end;
procedure getdata
var a: TStringList;
begin
a := TStringList.Create;
GetListData(s, a);
....
//循环....取
end;