zoukankan      html  css  js  c++  java
  • 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; 
  • 相关阅读:
    3.2.1 webpack-dev-server的使用
    打印预览及打印
    2.1.8 webpack的环境
    常用docker 启动
    github镜像
    Log解析
    【Bzoj4555】【Luogu P4091】求和(NTT)
    【Bzoj3527】【Luogu3338】[Zjoi2014]力(FFT)
    FFT实现高精度乘法
    Bzoj 2190 仪仗队(莫比乌斯反演)
  • 原文地址:https://www.cnblogs.com/sonicit/p/772409.html
Copyright © 2011-2022 走看看