我有这样一个字符串
x 2x字符(每两个字符后加个空格,奇数加零不足,且这两个字符是左右颠倒的) y 2y字符(同2x)
例如
(1) 5 23 65 09 3 56 07
(2) 6 32 11 65 4 71 82我要的到的结果是
(1)给据5 后去五个数 32569 ;根据3后取3个数 657
(2)给据6 后去6个数 231156 ;根据4后取4个数 1728
32569;657
231156;1728
为我最后想得到的字串

解决方案 »

  1.   

    自己写吧 midstr,strreverse(应该有)
      

  2.   

    算法:
    在Delphi中,整数的存放顺序如下  AB CD //AB是高字节,CD是低字节。在AB字节中,B是高位,A是低位,CD同  因而你可将每个字符转换成对应的数字,存放在连续的内存中,然后强制转换成WORD,或DWORD型变量,按16进制输出,即可
      

  3.   

    写了一个,感觉挺垃圾,觉得自己现在代码还没有刚毕业时写的好,郁闷ing...
    function GetXStr(str: string): string;
    var
      i, j, beginpos: integer;
      tempstr, tempstr2: string;
      temp: char;
    begin
      str := str + ' 0 ';
      beginpos := 1;
      for i := 1 to Length(str) - 2 do
      begin
        if (str[i] = ' ') then
        begin
          if (str[i + 2] = ' ') then
          begin
            tempstr := Copy(str, beginpos, i - beginpos);
            for j := 1 to Length(tempstr) do
              if tempstr[j] <> ' ' then tempstr2 := tempstr2 + tempstr[j];
            Result := Result + ';' + Copy(tempstr2, 2, strtoint(tempstr2[1]));
            tempstr2 := '';
            beginpos := i + 1;
          end
          else
          begin
            temp := str[i + 1];
            str[i + 1]  := str[i + 2];
            str[i + 2]  := temp;
          end;
        end;
      end;
    end;
      

  4.   

    //AStr = '5 23 65 09 3 56 07
    procedure FragStr(AStr : String; AStrs : TStrings) ;
    var
       vD ; TStrings;
       I, vI, vC : Integer;
       vS : String;
       function ReadStr(ACount : Integer; var AIndex : Integer) : String;
       var
           vS : String;
       begin
           vS := '';
           while Length(vS) < ACount do
           begin
               vS := vS + vD[AIndex][2] + vD[AIndex][1];
               Inc(AIndex);
           end;
           Result := Copy(vS, 1, ACount);
       end;
    begin
       AStrs.Clear;
       vD := TStringList.Create;
       try
          vD.Text := StringReplace(AStr, ' ', #$D#$A, [rfReplaceAll]);
          I := 0;
          while vD.Count > I do
          begin
              vC := Strtoint(vD[I]);
              Inc(I);
              AStrs.Add(ReadStr(vC, I));
          end;
       finally
          vD.Free;
       end;
    end;function GetStr(AStr : String) : String;
    var
       I : Integer;
       vD : TStrings;
    begin
       vD := TStringList.Create;
       Result := '';
       try
          FragStr(Astr, vD);
          for I := 0 to vD.Count - 1 do
          begin
              Result := vD[I] + ';';
          end;
       finally
          vD.Free;
       end;
    end;