zoukankan      html  css  js  c++  java
  • delphi 限制全角字符

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    var
      st: PChar;
    begin
      if Key in ['$', '^', '&',#163] then
        Key := #0;
    end;

    ----------------------------------------------------------------------------

    function SbctoDbc(s:string):string;
    var
      nlength,i:integer;
      str,ctmp,c1,c2:string;
      {
     在windows中,中文和全角字符都占两个字节,
     并且使用了 ascii chart  2  (codes  128 - 255 )。
    全角字符的第一个字节总是被置为163,
     而第二个字节则是 相同半角字符码加上128(不包括空格)。
     如半角a为65,则全角a则是163(第一个字节)、 193 (第二个字节, 128 + 65 )。
     而对于中文来讲,它的第一个字节被置为大于163,(
     如 ' 阿 ' 为: 176   162 ),我们可以在检测到中文时不进行转换。
    }
    begin
      nlength:= length(s);
       if  (nlength = 0 ) then
        exit;
      str:= '' ;
      setlength(ctmp,nlength + 1 );
      ctmp:= s;
      i:= 1 ;
       while  (i <= nlength)  do
      begin
        c1:= ctmp[i];
        c2:= ctmp[i + 1 ];
         if  (c1 = #163 ) then   // 如果是全角字符
         begin
          str:= str + chr(ord(c2[ 1 ]) - 128 );
          inc(i, 2 );
           continue ;

        end;

         if  (c1 > #163 ) then   // 如果是汉字
         begin
          str:= str + c1;
          str:= str + c2;
          inc(i, 2 );
           continue ;
        end;
         if  (c1 = #161 ) and (c2 = #161 ) then   // 如果是全角空格
         begin
          str:= str + '   ' ;
          inc(i, 2 );
           continue ;
        end;
        str:= str + c1;
        inc(i);
      end;
      result:= str;
    end;

  • 相关阅读:
    圆圈中最后剩下的数字
    扑克牌的顺子
    n个骰子的点数
    翻转单词顺序和左旋转字符串
    和为s的两个数字 和为s的连续正数序列
    LINUX学习(1)
    社交分享(facebook分享、twitter分享、link分享、google分享)
    获得HttpWebResponse请求的详细错误内容
    获得用户IP、城市、国家等信息的api接口
    win10彻底关闭自动更新
  • 原文地址:https://www.cnblogs.com/maweiwei/p/13533999.html
Copyright © 2011-2022 走看看