怎么把全角字符转换成半角字符,比如-转换成- (50分)

  • 主题发起人 主题发起人 jdelphi
  • 开始时间 开始时间
J

jdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
没有汉字
 
全角字符是两字节编码,如果与该字符的半角形式(单字节)有一个对应关系的话(低位或高位)就方便多了,
不过我不知道这个关系(或许没有),那就要你自己写一个对应表了,这样当碰到全角字符的时候直
接查表就行了。
 
自己建立一个一一对应的表最方便了!!![:D]
 
从半角转换成全角时可以根据半角字符从对应表中查找,
现在是全角,还要先判断两个字符合起来是不是一个全角字符吗?
总觉得从半角转换成全角容易,从全角转换成半角困难
 
建一一对应表 + 字符串快速替换,FReplace,在我提的问题中有的。
 
能详细说一下吗?
 
我是这样作的:
function quan_b(str: AnsiString;p:TProgressBar): AnsiString;
var
str0,str1,str2:AnsiString;
Flags: TReplaceFlags;
n:Integer;
const
strcn='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`1234567890-=\~!#$%^&()_+|[]{};':",。/<>?';
stren='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`1234567890-=/~!#$%^&()_+|[]{};'':",./<>?';
begin

str0:=str;
for n:=1 to 95 do
begin
str1:=copy(strcn,2*n-1,2);
str2:=copy(stren,n,1);
Flags:=[rfReplaceAll];
str0:=StringReplace(str0,str1,str2,Flags);

end;

quan_b:=str0;
end;
 
多人接受答案了。
 

Similar threads

回复
0
查看
873
不得闲
回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部