Delphi 里面有没有类似VB里面的 Split 函数? (100分)

  • 主题发起人 主题发起人 栋栋
  • 开始时间 开始时间

栋栋

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi 里面有没有类似VB里面的 Split 函数?

或者如何自己编写一个类似的函数?
 
Spilt 函数有什么作用?
是分割字符串吗?
 
呵呵,不好意思,是用来分割字符串的split
 
val,copy,好象还有很多。
 
copy和pos一起使用
 
Delete,Replace,Pos
 
// 顺手写了一个,没有测试,看看行不行!
procedure Split(S :String
Mychar : char var MyStrings:TStrings);
var
i,j,k:integer;
SubStr:String;
begin
MyStrings.Clear;
i:=length(s);
k:=1;
for j:=1 to i do
begin
if (s[j]=MyChar) and (K<>J) then
begin
substr:=copy(s,k,j-k);
MyStrings.add(substr);
k:=j+1;
end;
end;
end;
 
怎么用?
VB 里面的那个

如 s1 = "1111|2222|3333|4444"

s2 = split(s1,"|")
那么 s2(1) = 2222
s2(3) = 4444

如何做啊?

 
Split(S :String
Mychar : char var MyStrings:TStrings);
Split(S1,'|',S2);
 
var s:array[0..n]of string;
i:byte;
begin
i:=0;
while pos('|',s1)>0 do
begin
s:=copy(s1,1 pos('|',s1));
s1:=copy(s1,pos('|',s1)+1,length-pos('|',s1))
inc(i);
end;
 
怎么用啊?
没用啊!
 
呵呵,不懂呀![:D]
 
copy()
and
pos()
 
这只不过是简单的算法问题。
function split(src,dec : string):TStringList;
var
i : integer;
str : string;
begin
result := TStringList.Create;
repeat
i := pos(dec,src);
str := copy(src,1,i-1);
if (str='') and (i>0) then
begin
delete(src,1,length(dec));
continue;
end;
if i>0 then
begin
result.Add(str);
delete(src,1,i+length(dec)-1);
end;
until i<=0;
if src<>'' then
result.Add(src);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
ss : TStringList;
str,dec : string;
begin
str := '1111||2222||||3333|||4444||';
dec := '||';
ss := split(str,dec);
memo1.Lines.AddStrings(ss);
ss.Free;
end;

现在的感觉真好。
随手就能写一个函数。
只要知道怎样做,做起来真的很简单!
:)
 
不知道大家有没有看见过 VB/VBS 中的 Split 啊?
以下是一个完整的代码演示

s1 = "1111|2222|3333|4444"

s2 = Split(s1,"|")

那么
s2(0) = 1111
s2(1) = 2222
s2(2) = 3333
s2(3) = 4444

如何实现?
 
呵呵。
看看我的代码再说吧。
只要更改src,dec就行了。
src是源字符串,
dec是目标字符串。
 
多人接受答案了。
 
后退
顶部