字符串截取处理 ( 积分: 100 )

  • 主题发起人 主题发起人 jamily
  • 开始时间 开始时间
J

jamily

Unregistered / Unconfirmed
GUEST, unregistred user!
一个字符串如下
adb,cde,efd,kkdk
用,号隔开
用一函数处理成
abc
cde
efd
kkdk
也就是处理成,分开的字符,我不记得用什么函数!高手支招
 
ExtractStrings([','], [], 'adb,cde,efd,kkdk', Memo1.Lines);
//结果在memo1中

//或者:
StringReplace(abc,'/',#13#10,[rfReplaceAll]);
功能说明:将字符(串)中的/位置换行。
var abc:string;
begin
abc:='fjdhj/sdoh/jfoi/eoiu/jio/jf/owej';
memo1.Text:=StringReplace(abc,'/',#13#10,[rfReplaceAll]);
end;
 
procedure ShowS(S : String);
var
ss : TStrings;
i : Integer;
begin
ss := TStringList.Create;
ss.Text := StringReplace(S,',',#13#10,[rfReplaceAll]);
if ss.Count > 0 then
begin
for i := 0 to ss.Count - 1 do
begin
ShowMessage(ss.Strings);
end;
end;
end;

///////////////////////////
呵呵楼上好快

好方法!那个函数我一直都不知道,学到东西了[:D]
 
这个问题问过好几次了 ,在DFW里搜一下就知道了 有好几种方法呢
 
哎,为了分么得办法:
function GetPartStr(s: string; flag: string = '-'; ret: string = '0'; front:
boolean = true; onlychar: boolean = false): string;
var
i: integer;
begin
i := pos(flag, s);
if i = 0 then
begin
result := ret;
exit;
end;

if front then //前後取字符串
result := trim(copy(s, 1, i - 1))
else
// result := trim(copy(s, i + 1, length(s)));
result := trim(copy(s, i + length(flag), length(s)));
if result = '' then //如为空,返回缺省值
result := ret;
end;

以上函数是用来截取字符串的,功能灰常的好,使用也灰常滴方便,屁如:
var
s,s1:string
s:='fasdfa,qqfasfa'
s1:=getpartstr(s,',','')//这是取分割符’,‘前面的内容也就是fasdfa

s1:=getpartstr(s,',','',false)//这是取分割符','后面的内容就是qqfasfa

其他的就容易了,有了这个以后处理代码中的一些字符截取就灰常方便了

废话就不多说了快结帖给分吧,哈哈
 
后退
顶部