比如说我的字符'abcdefghijk' 怎么能把这些转换成
'AbcdEfghiJk'这样,随机转换,几个大写,几个小谢这种

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
        i:integer;
        str:string;
    begin
        str:='abcdefghijk';
        for i:=1 to length(str) do
        begin
            Randomize();
            if Random(2)=1 then
                str[i]:=LowerCase(str[i])[1]
            else
                str[i]:=UpperCase(str[i])[1];
        end;
        Label1.Caption:=str;
    end;
      

  2.   

    楼上的改一句
    procedure TForm1.Button1Click(Sender: TObject);
    var
        i:integer;
        str:string;
    begin
        str:='abcdefghijk';
        for i:=1 to length(str) do
        begin
            Randomize();
            if Random(i)=1 then
                str[i]:=LowerCase(str[i])[1]
            else
                str[i]:=UpperCase(str[i])[1];
        end;
        Label1.Caption:=str;
    end;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
        i:integer;
        str:string;
    begin
        str:='abcdefghijk';
        for i:=1 to length(str) do
        begin
            Randomize();
            if Random(2)=1 then
                str[i]:=LowerCase(str[i])[1]
            else
                str[i]:=UpperCase(str[i])[1];
        end;
        Label1.Caption:=str;
    end;
      

  4.   


    ????????????
    Random(i)=1 ?这个概率越来越小,字符大小转换就不平衡了。
      

  5.   


    我试了Random(2)=1,出现全大写,全小写的机率太大了
    所以试着改成Random(i)=1,情况就好得多了
      

  6.   


    Random(i)=1 改了 概率就不均衡了 肯定不行
      

  7.   

    修改一下,提高一下执行效率。
    function RandomUpperCase(S: String): String;
    var
      i : Integer;
      C : Char;
    begin
      Randomize();
      SetLength(Result, Length(S));
      for i := 1 to Length(S) do
      begin
        C := S[i];
        if Random(2) = 1 then
        begin
          if (C >= 'A') and (C <= 'Z') then Inc(C, 32);
        end
        else
          if (C >= 'a') and (C <= 'z') then Dec(C, 32);
        Result[i] := C;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Showmessage(RandomUpperCase('abcdefghijklmn'));
    end;
      

  8.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
        i:integer;
        str:string;
    begin
        str:='abcdefghijk';
        Randomize();
        for i:=1 to length(str) do
        begin
            if Random(2)=1 then
                str[i]:=LowerCase(str[i])[1]
            else
                str[i]:=UpperCase(str[i])[1];
        end;
        Label1.Caption:=str;
    end;
      

  9.   


    {改写自8楼秀峰代码}function RandomUpperCase(S: String): String;
    var
      I : Integer;
    begin
      Randomize();
      Result := S;
      for I := 1 to Length(Result) do
        if Random(2) = 1 then
          if Result[I] in ['A'..'Z'] then Inc(Result[I], 32)
        else
          if Result[I] in ['a'..'z'] then Dec(Result[I], 32);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Showmessage(RandomUpperCase('abcdefghijklmn'));
    end;
      

  10.   


    {提高代码易读性}function RandomUpperCase(S: String): String;
    var
      I : Integer;
    begin
      Randomize();
      Result := S;
      for I := 1 to Length(Result) do
        if Random(2) = 1 then
          case Result[I] of
            'A'..'Z' : Inc(Result[I], 32);
            'a'..'z' : Dec(Result[I], 32);
          end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Showmessage(RandomUpperCase('abcAEEghijklmn'));
    end;