zoukankan      html  css  js  c++  java
  • 分割字符串 ExtractStrings

    //分割字符串 ExtractStrings
    var
      s: String;
      List: TStringList;
    begin
      s := 'about: #delphi; #pascal, programming';
      List := TStringList.Create;
      ExtractStrings([';',',',':'],['#',' '],PChar(s),List);
      //第一个参数是分隔符; 第二个参数是开头被忽略的字符

      ShowMessage(List.Text);  //about
                               //delphi
                               //pascal
                               //programming
      List.Free;
    end;

    修改源码中的一行,可以处理"5,,1,2,3,湖北省-荆州市-荆州荆中路"连续分隔符的情况。

      if (Head <> Tail) and (Head^ <> #0) then改成  if  (Head^ <> #0) then即可。

    另外一个分隔字符串过程(由IdGlobal原来过程修改而成)

    procedure SplitDelimitedString(const AData: string; AStrings: TStrings; const ADelim: string = ' ');
    var
    i: Integer;
    LData: string;
    LDelim: Integer; //delim len
    LLeft: string;
    LLastPos, LLeadingSpaceCnt: PtrInt;
    begin
    Assert(Assigned(AStrings));
    AStrings.Clear;
    LDelim := Length(ADelim);
    LLastPos := 1;

    LData := AData;
    if LData = '' then begin //if WhiteStr
    Exit;
    end;
    LLeadingSpaceCnt := 0;
    while AData[LLeadingSpaceCnt + 1] <= #32 do begin
    Inc(LLeadingSpaceCnt);
    end;
    i := Pos(ADelim, LData);
    while I > 0 do begin
    LLeft := Copy(LData, LLastPos, I - LLastPos); //'abc d' len:=i(=4)-1 {Do not Localize}
    AStrings.Add(Trim(LLeft));
    LLastPos := I + LDelim; //first char after Delim
    i := PosIdx(ADelim, LData, LLastPos);
    end;//while found
    if LLastPos <= Length(LData) then begin
    AStrings.Add(Trim(Copy(LData, LLastPos, MaxInt)));
    end;
    end;

  • 相关阅读:
    2018杭电多校第六场1009(DFS,思维)
    Atcoder Regular Contest 085F(动态规划,线段树)
    IOS各类优化方案集锦
    iOS网络加载图片缓存策略之ASIDownloadCache缓存优化
    oc
    OC 内存管理机制总结
    ARC小知识
    oc常见误区
    常用第三方(分享,支付,二维码,语音,推送)
    UIKit,Core Data , Core Graphics, Core Animation,和OpenGLES框架
  • 原文地址:https://www.cnblogs.com/prtmon/p/2948162.html
Copyright © 2011-2022 走看看