• 如何转换全角字符到半角字符?zz对于所有编程来说这个是通用的。。


    我们知道,在windows中,中文和全角字符都占两个字节,并且使用了ascii chart 2 (codes 128?C255)。我们可以凭这一点来一个个检测用户输入的是否是中文和全角字符。实际上,全角字符的第一个字节总是被置为163,而第二个字节则是相同半角字符码加上128(不包括空格)。如半角a为65,则全角a则是163(第一个字节)、193(第二个字节,128+65)。而对于中文来讲,它的第一个字节被置为大于163,(如'阿'为:176 162),我们可以在检测到中文时不进行转换。
      以上仅为我个人试验所得,而我更是学习编程不到半月。如果有错误或失漏,请大家不吝赐教。下面我给出一个例程供大家参考。


      新建窗体,在窗体上放置button1、edit1、edit2。

    /*在edit1中输入全角字符、中文、半角字符或混杂输入。单击button1,edit1中的文字显示到edit2中并转换了所有的全角字符。注意,程序没有对特殊字符如255(按住alt再按小键盘的2、5、5输入)等作出正确反应。*/

    void __fastcall tform1::button1click(tobject *sender)
    {
            int nlength=edit1->text.length();
            if (nlength==0)
                    return;
            ansistring str="";
            char *ctmp=new char[nlength+1];
            strpcopy(ctmp,edit1->text);
            byte c1,c2;
            int i;
            for (i=0;i<nlength;i++)
            {
                    c1=ctmp[i];
                    c2=ctmp[i+1];
                    if (c1==163)//判断是否为全角字符
                    {

                            str=str+ansistring((char)(c2-128));
                            i++;
                            continue;
                     }
                    if (c1>163)//判断是否为文字
                    {

                            str=str+ansistring((char)c1);
                            str=str+ansistring((char)c2);
                            i++;
                            continue;
                    }
                    if ((c1==161) && (c2==161))//全角空格是个特例,另加处理
                            {
                                    str=str+" ";
                                    i++;
                                    continue;
                            }
                    str=str+ ansistring(char(c1));
            }
            edit2->text=str;
            delete ctmp;ctmp=null;
    } 

      以上代码c++builder5.0/win98 se下编译通过。
  • 相关阅读:
    VirtualBox如何增加CentOS根目录容量
    关于yum的一些安装问题
    Linux分区方案
    排查java.lang.OutOfMemoryError: GC overhead limit exceeded
    Linux Shell 编程 教程 常用命令
    sqlalchemy(二)简单的连接示例
    sqlalchemy(一)常用连接参数及包
    Syncthing – 数据同步利器---自己的网盘,详细安装配置指南,内网使用,发现服务器配置,更新docker
    删除所有已经停止的容器 docker rm $(docker ps -a -q)
    离线安装docker镜像
  • 原文地址:https://www.cnblogs.com/dayouluo/p/368461.html
Copyright © 2020-2023  润新知