有如下:
 var
   S:  string;
   Q:  string;
   ws:widestring;
   i:  integer;
 begin  
   S:=.....;                  { S为用户输入数据 }
   Q:=trimleft(trimright(S));
   ws:=Q;
   for i:=1 to length(ws) do
   begin
   if length(ws[i])>=2 then
     {中文处理}
   else
     {是英文处理}
 end; 使用此处理时,有如下问题:
 1、当用户输入的数据是全中文时可以处理,如S:='你好';
 2、当用户输入的数据是全英文时可以处理, 如S:='aa';
 3、当用户输入的数据是混合型时,有问题?
 请问如何解决?谢谢!
 

解决方案 »

  1.   

    你这个是因为在字符为中文的时候,你的i只是加了1,其实应该加2的,所以,可以用下面的方法来实现。
    while i <length(ws) do 
    begin
      if (length(ws[i])mod 2=0) then
         {中文处理}
         i :=i+2;
       else
         {是英文处理}
         i:=i+1;
    end;
      

  2.   

    var tmpstr:string;
    begin
    .....   
       for i:=1 to length(ws) do
       begin
           tmpstr:=ws[i];   //用这个string类型的临时变量来处理.
           if length(tmpstr)>=2 then
              {中文处理}
           else
              {是英文处理}
       end;