• Delphi中实现全角转半角


    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; 
  • 相关阅读:
    html5的离线缓存
    html5的本地存储
    html5的地理位置定位
    html5新添加的表单类型和属性
    html5的鼠标拖拽
    win下svn常用操作笔记
    git常用命令笔记
    centos7下NFS使用与配置
    centos7下mysql5.6的主从复制
    centos7下创建mysql5.6多实例
  • 原文地址:https://www.cnblogs.com/sonicit/p/772409.html
Copyright © 2020-2023  润新知