关于分割字符串的问题?

zwhu 2003-04-29 07:31:04
大家都知道,在ASP中,用split函数可以把一个字符串分成数组,如:
dim stra,strb
stra="abce|cdef|er"
strb=split(stra)

response.write(strb(0)) 'abce
response.write(strb(1)) 'cdef
response.write(strb(2)) 'er

好了,现在我写了一个delphi组件,需要在delphi中实现这个功能,请问delphi中是否有相应的函数以实现类似的功能?谢谢帮助,我是新手,分不多,谁帮我解决我只能给20分。
...全文
37 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwhu 2003-04-30
  • 打赏
  • 举报
回复
谢谢,明天晚上我已经写好了,呵呵
shuixin13 2003-04-29
  • 打赏
  • 举报
回复
procedure SeparateTerms(s : string;Separator : char;Terms : TStringList);
var
hs : string;
p : integer;

begin
Terms.Clear; // 清除所有的terms
if Length(s)=0 then // 如没有任何分隔字符存在就退出
Exit;
p:=Pos(Separator,s);
while P<>0 do
begin
hs:=Copy(s,1,p-1); // 复制 term
Terms.Add(hs); // 加入 term
Delete(s,1,p); // 清除分隔符
p:=Pos(Separator,s); // 寻找下一个分隔符
end;
if Length(s)>0 then
Terms.Add(s); // 结尾剩余字符加入 term
end;


//使用办法

var
Terms : TStringList;

begin

Terms:=TStringList.Create;
str1='TEST|44.5|4'
SeparateTerms(str1,'|',Terms);
Terms.Free;
end;
cxreal 2003-04-29
  • 打赏
  • 举报
回复
自己写吧,下面的是别人写的
用这三个函数搭配可以分割字符串

//去掉多余的分割符,规范字符串
Function RegulateStr(aString:String;Sepchar:String):String;
var
i,Num:Integer;
Flag:Boolean;
MyStr,TempStr:String;
begin
Flag:=False;//进行标志,去除多余的分割符
Num:=Length(aString);//计算aString串的长度
for i:=1 to Num do
begin
TempStr:=Copy(aString,i,1);//取aString串中的一字符
if TempStr <> SepChar then
begin
MyStr:=MyStr+TempStr;
Flag:=True;
end
else
if(Flag=True)then
begin
Mystr:=Mystr+TempStr;
Flag:=False;
end;
end;
if MyStr[Length(MyStr)] <> SepChar then
MyStr:=MyStr+SepChar;
RegulateStr:=MyStr;
end;

//得到字符串中一个子串
Function GetSubStr(var aString:String;SepChar:String):String;
var
Mystr:String;
StrLen:Integer;
SepCharPos:Integer;
begin
StrLen:=Length(aString);
SepCharPos:=Pos(SepChar,aString);//计算分割符在子串中的位置
MyStr:=Copy(aString,1,SepCharPos-1); //将分割符前所有字符放到mystr串中
Delete(aString,1,SepCharPos);//除去分割符和分割符前的子串
GetSubStr:=MyStr;//返回一个字段
end;

//计算一个字符串要被分割成几个字段
Function GetSubStrNum(aString:String;SepChar:String):Integer;
var
i:Integer;
StrLen:Integer;
Num:Integer;
begin
StrLen:=Length(aString);
Num:=0;
for i:=1 to StrLen do
if Copy(aString,i,1)=SepChar then
Num:=Num+1;
result:=Num;
end;
net205 2003-04-29
  • 打赏
  • 举报
回复
对,同意ChinaOk(授人以鱼,不如授人以渔)
ChinaOk 2003-04-29
  • 打赏
  • 举报
回复
没有这样的函数。
可以自己写吧。pos。copy结合。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧