| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3429 人关注过本帖
标题:如何批量地将双字节(全角)字母转换为单字节的(半角)字母
只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
?CHRTRANC([ABCD,。EFG],[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz],[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz])
图片附件: 游客没有浏览图片的权限,请 登录注册

坚守VFP最后的阵地
2013-01-08 16:33
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你不动那些不需要动的内容,当然没问题了,但你这个还是在需要增删内容的时候不方便,特别是牵涉到引起字符串标识符的符号时,到时那代码很难看了。

授人以渔,不授人以鱼。
2013-01-08 16:38
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
程序代码:
*---生成全角、半角字母表:A~Z的ASC码为41921-41946,a~z的ASC码为41953-41978
CLEAR
CREATE CURSOR LSB (全角 C(2),半角 C(1))
A=[AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZaabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz]
FOR I=1 TO 104
    IF MOD(I,2)=1
       A1=SUBSTRC(A,I,1)
    ELSE
       A2=SUBSTRC(A,I,1)
       INSERT INTO LSB VALUES (A1,A2)
    ENDIF
ENDFOR
CREATE CURSOR TABNAME (T C(40),T1 C(40))
INSERT INTO TABNAME VALUES ([Fidelity(大连)商务服务有限公司],[])
INSERT INTO TABNAME VALUES ([FIL(大连)科技有限公司],[])
SCAN
   B=ALLTRIM(T)
   FOR I=1 TO LENC(B)
       IF BETWEEN(ASC(SUBSTRC(B,I,1)),41921,41946) OR BETWEEN(ASC(SUBSTRC(B,I,1)),41953,41978)
          SELECT 半角 FROM LSB WHERE 全角==SUBSTRC(B,I,1) INTO ARRAY BJ
          B=CHRTRANC(B,SUBSTRC(B,I,1),BJ)
       ENDIF
   ENDFOR
   SELECT TABNAME
   REPLACE T1 WITH B
ENDSCAN
BROWSE
这样应该保险了吧
图片附件: 游客没有浏览图片的权限,请 登录注册

坚守VFP最后的阵地
2013-01-08 17:07
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
知道原理,怎么写都可以的了。

授人以渔,不授人以鱼。
2013-01-08 17:13
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
以下是引用tlliqi在2013-1-7 20:58:23的发言:

upda 表 set 字段=lower(字段)
这应该是转换为小写字母,而不是全角转换成半角。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2013-01-08 19:50
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
程序代码:
CLOSE ALL
SET SAFETY OFF

USE T1
SCAN
   ZZ=""
   FOR I=1 TO LENC(ALLTRIM(MC))
      ASC_MC=ASC(SUBSTRC(MC,I,1))
      IF BETWEEN(ASC_MC,41921,41946) OR ;
         BETWEEN(ASC_MC,41953,41978)
         ZZ=ZZ-CHR(ASC_MC-41856)  &&减去全角字母和半角字母的ASCII码之差
      ELSE
         ZZ=ZZ-SUBSTRC(MC,I,1)
      ENDIF
   NEXT
   REPLACE MC WITH ZZ
ENDSCAN

CLOSE ALL
SET SAFETY ON


图片附件: 游客没有浏览图片的权限,请 登录注册
2013-01-08 21:38
快速回复:如何批量地将双字节(全角)字母转换为单字节的(半角)字母
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039042 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved