字符处理的简单问题,快来抢啊,先答先得!(100分)

  • 主题发起人 主题发起人 cold-fish
  • 开始时间 开始时间
C

cold-fish

Unregistered / Unconfirmed
GUEST, unregistred user!
有一字符串" '1','11','6',,.... "如何生成一个数组使其为array(0)="'1'"
array(1)="'11'" ......并得到这个数组的数目,要原码,设这个字符串为Pro_List
 
以下是一段string -> stringList 的方法,因为stringList有 .count 属性,所以我
一般用stringList处理。

function T_comm.sepstr(str:string):TstringList;
var
tempList:TstringList;
k,j:integer;
temp:string;
begin
tempList:=TstringList.Create;
result:=tempList;
if length(str)=0 then exit;
j:=0;
temp:='';
for k:=1 to length(str) do
begin
if str[k]=',' then
begin
tempList.Add(temp);
temp:='';
continue;
end;
temp:=temp+str[k];
end;
if length(temp)>0 then templist.Add(temp);
result:=tempList;
end;
 
提供思路,因为Delphi不懂:( ,不用数组吧~~~~~
sql="";
Position=Instr(Pro_List,",");
while (Position>0) {
TheStr=left(Pro_List,Position);
TheStr=操作(TheStr) //get the form such as 1
sql="你要的sql"+TheStr+"union";
Pro_List=Substring(Pro_List,Position+1,len(Pro_List));
Position=Instr(Pro_List,",");
}
sql=left(sql,1,len(sql)-5)
//去掉多余的Union
 
真巧!TStringList有一个CommaText属性,刚好是用逗号分隔的字符串。
var
i:Integer;
SL:TStringList;
begin
SL:=TStringList.Create;
SL.CommaText:='''1'',''11'',''16''';
for i:=0 to SL.Count-1 do
Memo1.Lines.Add(SL);
end;

多简单!
 
其实我问的是在ASP 里实现,先已找到办法,是用split函数,可是delphi里好象没这个函数
很奇怪,这样的用法应该很常出现的吧,不过还是欢迎大家讨论
过段时间再加分,先来的一定不会失望的:)
后来的也别泄气,说得好一样有分
 
还没明白吗?在Delphi中只要一句: SL.CommaText:='''1'',''11'',''16'''
就完成了split函数的
功能——将被逗号分隔的字符串放到TStringList的字符数组中去,产生的字符串的数目可由Count属性
读出。已经这么方便了,还有什么更好的方法吗?为什么一定要使用什么函数呢?当然,遇到其它的
字符作为分隔符的情况时,可以使用njxdh的方法,也不麻烦。看一看TStrings.SetCommaText的源代码,
多严密!还是用现成的吧。 :)
 
多人接受答案了。
 
后退
顶部