Tag: 分割预览模式: 普通 | 列表

字符串分割函数

Delphi代码
  1. DELPHI没有自己的字符串分割函数,所以只能程序员自己写了,网上搜了好多但是真正好用的没有几个,  
  2. 下面这个是我在网上找到修改后了的,个人感觉算法不错,所以就贴了上来。  
  3. {第一种方法 }  
  4. function SplitString(Source, Deli: string ): TStringList;stdcall;  
  5. var  
  6.   EndOfCurrentString: byte;            //Deli是分割符号  
  7.   StringList:         TStringList;  
  8. begin  
  9.   StringList:=TStringList.Create;  
  10.   while Pos(Deli, Source)>0 do  
  11.   begin  
  12.     EndOfCurrentString := Pos(Deli, Source);  
  13.     StringList.add(Copy(Source, 1, EndOfCurrentString - 1));  
  14.     Source := Copy(Source, EndOfCurrentString + length(Deli), length(Source) - EndOfCurrentString);  
  15.   end;  
  16.   Result := StringList;  
  17.   StringList.Add(source);  
  18. end;  
  19.   
  20.   
  21. {第二种方法 }  
  22. type  
  23.   userarray=array of string;  
  24. function split(s:string;dot:char):userarray;  
  25. var  
  26.   str : userarray;  
  27.   i,j : integer;  
  28. begin  
  29.   i:=1;  
  30.   j:=0;  
  31.   SetLength(str, 255);  
  32. while Pos(dot, s) > 0 do //Pos返回子串在父串中第一次出现的位置.  
  33. begin  
  34.   str[j]:=copy(s,i,pos(dot,s)-i);  
  35.   i:=pos(dot,s)+1;  
  36.   s[i-1] := chr(ord(dot)+1);  
  37.   j:=j+1;  
  38. end;  
  39.   str[j]:=copy(s,i,strlen(pchar(s))-i+1);  
  40.   result:=str;  
  41. end;  
  42. {第二种方法 }  
  43. function StringToWords(const sString, Token: string): TStringList;var  sTmp: string;  iPos: Integer;  Toklen: Integer;begin  Toklen := Length(Token);  Result := TStringList.Create;  sTmp := sString;  iPos := Pos(Token, sTmp);  while iPos <> 0 do  begin    Result.Add(Copy(sTmp, 1, iPos - 1));    Delete(sTmp, 1, iPos - 1 + Toklen);    iPos := Pos(Token, sTmp);  end;    Result.Add(sTmp);end;  
  44.   
  45.   
  46.   
  47. 使用案例:  
  48.   
  49. var  
  50.   iField   :integer;  
  51.   lStrList :TStringList;  
  52. begin  
  53.   lStrList := TStringList.Create;  
  54. with ClientDataSet1 do  
  55.   for iField := 0 to FieldCount -1 do  
  56.   begin  
  57.     lStrList := StringToWords(Fields[iField].FieldName,';');  
  58.   end;  
  59. end;  

Tags: 字符串 分割 函数

分类:Delphi | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 37