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; 
  • 相关阅读:
    ie兼容,手机端兼容问题
    JS-cookie和正则表达式
    第六节蓝桥杯 方格填数
    最长公共子串长度
    上台阶问题
    各种好东西
    Painting the balls (dp优化)
    Nobita's New Filesystem (bitset)
    恐狼后卫 (区间dp)
    CF701F String set queries (分块思想+暴力)
  • 原文地址:https://www.cnblogs.com/sonicit/p/772409.html
Copyright © 2011-2022 走看看