大家都会"小写转大写"........现在我想做到数字的大写转小写.....不像想得那么简单..有兴趣的进来呀 ( 积分: 50 )

  • 主题发起人 主题发起人 xuegaoyili
  • 开始时间 开始时间
X

xuegaoyili

Unregistered / Unconfirmed
GUEST, unregistred user!
function BigToSmall(Value: string): string;
const
BigNum='零壹贰叁肆伍陆柒捌玖';
var
i: integer;
j: integer;
begin
result := '';
for i := 1 to length(Value) do //错误在这里,这个length()会把汉字分开,一个汉字是两个长度,也就是说它是按字节给返回的长度
begin
if pos(Value,BigNum)<>0 then
begin
result:=result+IntToStr(Pos(Value,BigNum)-1);
end;
end;
end;
-------------------------------------------------------------------------
另一种想法
function BigToSmall(Value: string): string;
var
i: integer;
j: integer;
begin
result := '';
for i := 1 to length(Value) do //同样不能得到一个汉字,汉字按2个字节分开处理了
begin
case Value of
'零':Result:=Result+'0';
'壹':Result:=Result+'1';
'贰':Result:=Result+'2';
'叁':Result:=Result+'3';
'肆':Result:=Result+'4';
'伍':Result:=Result+'5';
'陆':Result:=Result+'6';
'柒':Result:=Result+'7';
'捌':Result:=Result+'8';
'玖':Result:=Result+'9';
end;
end;
end;
 
function BigToSmall(Value: string): string;
const
BigNum='零壹贰叁肆伍陆柒捌玖';
var
i: integer;
j: integer;
begin
result := '';
for i := 1 to length(Value) do //错误在这里,这个length()会把汉字分开,一个汉字是两个长度,也就是说它是按字节给返回的长度
begin
if pos(Value,BigNum)<>0 then
begin
result:=result+IntToStr(Pos(Value,BigNum)-1);
end;
end;
end;
-------------------------------------------------------------------------
另一种想法
function BigToSmall(Value: string): string;
var
i: integer;
j: integer;
begin
result := '';
for i := 1 to length(Value) do //同样不能得到一个汉字,汉字按2个字节分开处理了
begin
case Value of
'零':Result:=Result+'0';
'壹':Result:=Result+'1';
'贰':Result:=Result+'2';
'叁':Result:=Result+'3';
'肆':Result:=Result+'4';
'伍':Result:=Result+'5';
'陆':Result:=Result+'6';
'柒':Result:=Result+'7';
'捌':Result:=Result+'8';
'玖':Result:=Result+'9';
end;
end;
end;
 
这还不容易?把你的稍作修改:
function BigToSmall(Value: string): string;
const
BigNum='零壹贰叁肆伍陆柒捌玖';
var
i: integer;
begin
result := '';
for i := 1 to length(Value) div 2 do //错误在这里,这个length()会把汉字分开,一个汉字是两个长度,也就是说它是按字节给返回的长度
begin
if pos(copy(Value,i*2-1,2),BigNum)<>0 then
begin
result:=result+IntToStr(Pos(copy(Value,i*2-1,2),BigNum) div 2);
end;
end;
end;
问题是,这毫无意义,这种转换要考虑万千百,元角分,零等,
如:一万零三十元四角
要考虑这种转换,还真得认真设计才行
 
呵呵
屡试不爽阿,把sting修改成[blue]widestring[/blue]就OK了,给分吧
 
chenybin兄弟,你的方法不成呀...我用二楼的成功了..散分....给你10分吧.呵
 
唉……

我是让你改参数阿,二楼的办法如果碰到中英文混合就麻烦了
function BigToSmall(Value: widestring):
怪我自己没说清楚,浪费
 
后退
顶部