以前曾有人发过~import java.awt.*; import java.awt.event.*;class Test { public static void main(String[] args) { String num = "零壹贰叁肆伍陆柒捌玖"; String dw = "圆拾佰仟万亿"; String m = "30020.23"; String mm[] = null; mm = m.split("\\."); String money = mm[0]; String result = num.charAt(Integer.parseInt("" + mm[1].charAt(0))) + "角" + num.charAt(Integer.parseInt("" + mm[1].charAt(1))) + "分"; for (int i = 0; i < money.length(); i++) { String str = ""; int n = Integer.parseInt(money.substring(money.length() - i - 1, money.length() - i)); str = str + num.charAt(n); if (i == 0) { str = str + dw.charAt(i); } else if ( (i + 4) % 8 == 0) { str = str + dw.charAt(4); } else if (i % 8 == 0) { str = str + dw.charAt(5); } else { str = str + dw.charAt(i % 4); } result = str + result; } result = result.replaceAll("零([^圆]{1})", "零"); result = result.replaceAll("零+", "零"); result = result.replaceAll("零圆", "圆"); System.out.println(result); } }
<script language="javascript"> var strArray = new Array(); strArray[0] = "元" strArray[1] = "十" strArray[2] = "百" strArray[3] = "千"var str = "1235";var len = str.length;var ss = ""; for(i=1;i<=len;i++){ ss += str.substring(i-1,i)+strArray[len-i]; } alert(ss); </script>
1.(C#): //加到类的定义部分 private static string[] cstr={"零","壹","贰","叁","肆", "伍", "陆","柒","捌","玖"}; private static string[] wstr={"","","拾","佰","仟","萬","拾","佰","仟","億","拾","佰","仟"}; //数字必须在12位整数以内的字符串 //调用方式如:Label1.Text=ConvertInt("数字字符串"); public string ConvertInt(string str) { int len=str.Length; int i; string tmpstr,rstr; rstr=""; for(i=1;i<=len;i++) { tmpstr=str.Substring(len-i,1); rstr=string.Concat(cstr[Int32.Parse(tmpstr)]+wstr[i],rstr); } rstr=rstr.Replace("拾零","拾"); rstr=rstr.Replace("零拾","零"); rstr=rstr.Replace("零佰","零"); rstr=rstr.Replace("零仟","零"); rstr=rstr.Replace("零萬","萬"); for(i=1;i<=6;i++) rstr=rstr.Replace("零零","零"); rstr=rstr.Replace("零萬","零"); rstr=rstr.Replace("零億","億"); rstr=rstr.Replace("零零","零"); rstr+="圆整"; return rstr; } 2. 转换大小写金额的ASP代码 <% dim a '要转换成大写的金额 dim atoc '转换之后的值 Dim String1 '如下定义 Dim String2 '如下定义 Dim String3 '从原A值中取出的值 Dim I '循环变量 Dim J 'A的值乘以100的字符串长度 Dim Ch1 '数字的汉语读法 Dim Ch2 '数字位的汉字读法 Dim nZero '用来计算连续的零值是几个 String1 = "零壹贰叁肆伍陆柒捌玖" String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分" nZero = 0 If InStr(1, CStr(a * 100), ".") <> 0 Then err.Raise 5000, , "此函数( AtoC() )只能转换小数点后有两位以内的数!" End If J = Len(CStr(a * 100)) String2 = Right(String2, J) '取出对应位数的STRING2的值 For I = 1 To J String3 = Mid(a * 100, I, 1) '取出需转换的某一位的值 If I <> (J - 3) + 1 And I <> (J - 7) + 1 And I <> (J - 11) + 1 And I <>(J - 15) + 1 Then If String3 = 0 Then Ch1 = "" Ch2 = "" nZero = nZero + 1 ElseIf String3 <> 0 And nZero <> 0 Then Ch1 = "零" & Mid(String1, clng(String3) + 1, 1) Ch2 = Mid(String2, I, 1) nZero = 0 Else Ch1 = Mid(String1, clng(String3) + 1, 1) Ch2 = Mid(String2, I, 1) nZero = 0 End If Else '该位是万亿,亿,万,元位等关键位 If String3 <> 0 And nZero <> 0 Then Ch1 = "零" & Mid(String1, clng(String3) + 1, 1) Ch2 = Mid(String2, I, 1) nZero = 0 ElseIf String3 <> 0 And nZero = 0 Then Ch1 = Mid(String1, clng(String3) + 1, 1) Ch2 = Mid(String2, I, 1) nZero = 0 ElseIf String3 = 0 And nZero >= 3 Then Ch1 = "" Ch2 = "" nZero = nZero + 1 Else Ch1 = "" Ch2 = Mid(String2, I, 1) nZero = nZero + 1 End If If I = (J - 11) + 1 Or I = (J - 3) + 1 Then '如果该位是亿位或元位,则必须写上 Ch2 = Mid(String2, I, 1) End If End If AtoC = AtoC & Ch1 & Ch2 If I = J And String3 = 0 Then '最后一位(分)为0时,加上"整" AtoC = AtoC & "整" End If Next if a=0 then atoc="零元整" end if %> 3. <!--#include file=common.asp--> <% dim tmpnum '从第一张页面传过来的小写金额 tmpnum=request("page1num") '调用并显示大写金额 response.write rmb(cdbl(tmpnum)) response.end %> common.asp <% Function rmb(num) num = FormatNumber(num, 2) Dim numList Dim rmbList Dim numLen Dim numChar Dim numstr Dim n Dim n1, n2 Dim hz numList = "零壹贰叁肆伍陆柒捌玖" rmbList = "分角元拾佰仟万拾佰仟亿拾佰仟万" If num > 9999999999999.99 Then rmb = "超出范围的人民币值" Exit Function End If numstr = CStr(num * 100) numLen = Len(numstr) n = 1 Do While n <= numLen numChar = CInt(Mid(numstr, n, 1)) n1 = Mid(numList, numChar + 1, 1) n2 = Mid(rmbList, numLen - n + 1, 1) If Not n1 = "零" Then hz = hz + CStr(n1) + CStr(n2) Else If n2 = "亿" Or n2 = "万" Or n2 = "元" Or n1 = "零" Then Do While Right(hz, 1) = "零" hz = Left(hz, Len(hz) - 1) Loop End If If (n2 = "亿" Or (n2 = "万" And Right(hz, 1) <> "亿") Or n2 = "元") Then hz = hz + CStr(n2) Else If Left(Right(hz, 2), 1) = "零" Or Right(hz, 1) <> "亿" Then hz = hz + n1 End If End If End If n = n + 1 Loop Do While Right(hz, 1) = "零" hz = Left(hz, Len(hz) - 1) Loop If Right(hz, 1) = "元" Then hz = hz + "整" End If rmb = hz End Function %> 这个版本解决了小数位不能到分的问题,处理方式符合会计方式! 4. 金额大小写转换的asp完全无错版本 <!--#include file=common.asp--> <% dim tmpnum '从第一张页面传过来的小写金额 tmpnum=request("page1num") '调用并显示大写金额 response.write rmb(cdbl(tmpnum)) response.end %> 金额大小写转换的asp完全无错版本 <!--#include file=common.asp--> <% dim tmpnum '从第一张页面传过来的小写金额 tmpnum=request("page1num") '调用并显示大写金额 response.write rmb(cdbl(tmpnum)) response.end %> common.asp <% Function rmb(num) num = FormatNumber(num, 2) Dim numList Dim rmbList Dim numLen Dim numChar Dim numstr Dim n Dim n1, n2 Dim hz numList = "零壹贰叁肆伍陆柒捌玖" rmbList = "分角元拾佰仟万拾佰仟亿拾佰仟万" If num > 9999999999999.99 Then rmb = "超出范围的人民币值" Exit Function End If numstr = CStr(num * 100) numLen = Len(numstr) n = 1 Do While n <= numLen numChar = CInt(Mid(numstr, n, 1)) n1 = Mid(numList, numChar + 1, 1) n2 = Mid(rmbList, numLen - n + 1, 1) If Not n1 = "零" Then hz = hz + CStr(n1) + CStr(n2) Else If n2 = "亿" Or n2 = "万" Or n2 = "元" Or n1 = "零" Then Do While Right(hz, 1) = "零" hz = Left(hz, Len(hz) - 1) Loop End If If (n2 = "亿" Or (n2 = "万" And Right(hz, 1) <> "亿") Or n2 = "元") Then hz = hz + CStr(n2) Else If Left(Right(hz, 2), 1) = "零" Or Right(hz, 1) <> "亿" Then hz = hz + n1 End If End If End If n = n + 1 Loop Do While Right(hz, 1) = "零" hz = Left(hz, Len(hz) - 1) Loop If Right(hz, 1) = "元" Then hz = hz + "整" End If rmb = hz End Function %> 5. <%function Money(thenumber) dim Money,i,String1,String2,length,checkp´定义变量 dim one(),onestr()´定义数组 String1 = "零壹贰叁肆伍陆柒捌玖" String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分厘毫" checkp=instr(thenumber,".")´判断是否含有小数位 if checkp<>0 then thenumber=replace(thenumber,".","")´去除小数位 end if length=len(thenumber) ´取得数据长度 redim one(length-1)´重新定义数组大小 redim onestr(length-1)´重新定义数组大小 for i=0 to length-1 one(i)=mid(thenumber,i+1,1) ´循环取得每一位的数字 one(i)=mid(string1,one(i)+1,1)´循环取得数字对应的大写 if checkp=0 then ´不含有小数的数据其数字对应的单位 onestr(i)=mid(string2,14-length+i,1) else ´含有小数的数据其数字对应的单位 onestr(i)=mid(string2,15-length+i+len(thenumber)-checkp,1) end if one(i)=one(i)&onestr(i)´将数字与单位组合 next Money=replace(join(one)," ","") ´取得数组中所有的元素,并连接起来 Money=replace(Money,"零元","元") Money=replace(Money,"零万","万") Money=replace(Money,"零亿","亿") Money=replace(Money,"零仟","零") Money=replace(Money,"零佰","零") Money=replace(Money,"零拾","零") do while not instr(Money,"零零")=0 Money=replace(Money,"零零","零") loop response.write Money ´显示结果 end function %>
import java.awt.event.*;class Test
{
public static void main(String[] args)
{
String num = "零壹贰叁肆伍陆柒捌玖";
String dw = "圆拾佰仟万亿";
String m = "30020.23";
String mm[] = null;
mm = m.split("\\.");
String money = mm[0]; String result = num.charAt(Integer.parseInt("" + mm[1].charAt(0))) +
"角" +
num.charAt(Integer.parseInt("" + mm[1].charAt(1))) + "分"; for (int i = 0; i < money.length(); i++)
{
String str = "";
int n = Integer.parseInt(money.substring(money.length() - i - 1,
money.length() - i));
str = str + num.charAt(n);
if (i == 0)
{
str = str + dw.charAt(i);
}
else if ( (i + 4) % 8 == 0)
{
str = str + dw.charAt(4);
}
else if (i % 8 == 0)
{
str = str + dw.charAt(5);
}
else
{
str = str + dw.charAt(i % 4);
}
result = str + result;
}
result = result.replaceAll("零([^圆]{1})", "零");
result = result.replaceAll("零+", "零");
result = result.replaceAll("零圆", "圆");
System.out.println(result); }
}
var strArray = new Array();
strArray[0] = "元"
strArray[1] = "十"
strArray[2] = "百"
strArray[3] = "千"var str = "1235";var len = str.length;var ss = "";
for(i=1;i<=len;i++){
ss += str.substring(i-1,i)+strArray[len-i];
}
alert(ss);
</script>
//加到类的定义部分
private static string[] cstr={"零","壹","贰","叁","肆", "伍", "陆","柒","捌","玖"};
private static string[] wstr={"","","拾","佰","仟","萬","拾","佰","仟","億","拾","佰","仟"};
//数字必须在12位整数以内的字符串
//调用方式如:Label1.Text=ConvertInt("数字字符串"); public string ConvertInt(string str)
{
int len=str.Length;
int i;
string tmpstr,rstr;
rstr="";
for(i=1;i<=len;i++)
{
tmpstr=str.Substring(len-i,1);
rstr=string.Concat(cstr[Int32.Parse(tmpstr)]+wstr[i],rstr);
}
rstr=rstr.Replace("拾零","拾");
rstr=rstr.Replace("零拾","零");
rstr=rstr.Replace("零佰","零");
rstr=rstr.Replace("零仟","零");
rstr=rstr.Replace("零萬","萬");
for(i=1;i<=6;i++)
rstr=rstr.Replace("零零","零");
rstr=rstr.Replace("零萬","零");
rstr=rstr.Replace("零億","億");
rstr=rstr.Replace("零零","零");
rstr+="圆整";
return rstr;
}
2.
转换大小写金额的ASP代码
<%
dim a '要转换成大写的金额
dim atoc '转换之后的值
Dim String1 '如下定义
Dim String2 '如下定义
Dim String3 '从原A值中取出的值
Dim I '循环变量
Dim J 'A的值乘以100的字符串长度
Dim Ch1 '数字的汉语读法
Dim Ch2 '数字位的汉字读法
Dim nZero '用来计算连续的零值是几个 String1 = "零壹贰叁肆伍陆柒捌玖"
String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"
nZero = 0 If InStr(1, CStr(a * 100), ".") <> 0 Then
err.Raise 5000, , "此函数( AtoC() )只能转换小数点后有两位以内的数!"
End If J = Len(CStr(a * 100))
String2 = Right(String2, J) '取出对应位数的STRING2的值 For I = 1 To J
String3 = Mid(a * 100, I, 1) '取出需转换的某一位的值 If I <> (J - 3) + 1 And I <> (J - 7) + 1 And I <> (J - 11) + 1 And I <>(J - 15) + 1 Then
If String3 = 0 Then
Ch1 = ""
Ch2 = ""
nZero = nZero + 1
ElseIf String3 <> 0 And nZero <> 0 Then
Ch1 = "零" & Mid(String1, clng(String3) + 1, 1)
Ch2 = Mid(String2, I, 1)
nZero = 0
Else
Ch1 = Mid(String1, clng(String3) + 1, 1)
Ch2 = Mid(String2, I, 1)
nZero = 0
End If
Else '该位是万亿,亿,万,元位等关键位
If String3 <> 0 And nZero <> 0 Then
Ch1 = "零" & Mid(String1, clng(String3) + 1, 1)
Ch2 = Mid(String2, I, 1)
nZero = 0
ElseIf String3 <> 0 And nZero = 0 Then
Ch1 = Mid(String1, clng(String3) + 1, 1)
Ch2 = Mid(String2, I, 1)
nZero = 0
ElseIf String3 = 0 And nZero >= 3 Then
Ch1 = ""
Ch2 = ""
nZero = nZero + 1
Else
Ch1 = ""
Ch2 = Mid(String2, I, 1)
nZero = nZero + 1
End If If I = (J - 11) + 1 Or I = (J - 3) + 1 Then '如果该位是亿位或元位,则必须写上
Ch2 = Mid(String2, I, 1)
End If End If
AtoC = AtoC & Ch1 & Ch2 If I = J And String3 = 0 Then '最后一位(分)为0时,加上"整"
AtoC = AtoC & "整"
End If Next
if a=0 then
atoc="零元整"
end if
%>
3.
<!--#include file=common.asp-->
<%
dim tmpnum
'从第一张页面传过来的小写金额
tmpnum=request("page1num")
'调用并显示大写金额
response.write rmb(cdbl(tmpnum))
response.end
%>
common.asp
<%
Function rmb(num) num = FormatNumber(num, 2)
Dim numList
Dim rmbList
Dim numLen
Dim numChar
Dim numstr
Dim n
Dim n1, n2
Dim hz
numList = "零壹贰叁肆伍陆柒捌玖"
rmbList = "分角元拾佰仟万拾佰仟亿拾佰仟万" If num > 9999999999999.99 Then
rmb = "超出范围的人民币值"
Exit Function
End If numstr = CStr(num * 100)
numLen = Len(numstr)
n = 1
Do While n <= numLen
numChar = CInt(Mid(numstr, n, 1))
n1 = Mid(numList, numChar + 1, 1)
n2 = Mid(rmbList, numLen - n + 1, 1)
If Not n1 = "零" Then
hz = hz + CStr(n1) + CStr(n2)
Else
If n2 = "亿" Or n2 = "万" Or n2 = "元" Or n1 = "零" Then
Do While Right(hz, 1) = "零"
hz = Left(hz, Len(hz) - 1)
Loop
End If
If (n2 = "亿" Or (n2 = "万" And Right(hz, 1) <> "亿") Or n2 = "元") Then
hz = hz + CStr(n2)
Else
If Left(Right(hz, 2), 1) = "零" Or Right(hz, 1) <> "亿" Then
hz = hz + n1
End If
End If
End If
n = n + 1
Loop
Do While Right(hz, 1) = "零"
hz = Left(hz, Len(hz) - 1)
Loop
If Right(hz, 1) = "元" Then
hz = hz + "整"
End If
rmb = hz
End Function %>
这个版本解决了小数位不能到分的问题,处理方式符合会计方式!
4.
金额大小写转换的asp完全无错版本
<!--#include file=common.asp-->
<%
dim tmpnum
'从第一张页面传过来的小写金额
tmpnum=request("page1num")
'调用并显示大写金额
response.write rmb(cdbl(tmpnum))
response.end
%>
金额大小写转换的asp完全无错版本
<!--#include file=common.asp-->
<%
dim tmpnum
'从第一张页面传过来的小写金额
tmpnum=request("page1num")
'调用并显示大写金额
response.write rmb(cdbl(tmpnum))
response.end
%>
common.asp
<%
Function rmb(num) num = FormatNumber(num, 2)
Dim numList
Dim rmbList
Dim numLen
Dim numChar
Dim numstr
Dim n
Dim n1, n2
Dim hz
numList = "零壹贰叁肆伍陆柒捌玖"
rmbList = "分角元拾佰仟万拾佰仟亿拾佰仟万" If num > 9999999999999.99 Then
rmb = "超出范围的人民币值"
Exit Function
End If numstr = CStr(num * 100)
numLen = Len(numstr)
n = 1
Do While n <= numLen
numChar = CInt(Mid(numstr, n, 1))
n1 = Mid(numList, numChar + 1, 1)
n2 = Mid(rmbList, numLen - n + 1, 1)
If Not n1 = "零" Then
hz = hz + CStr(n1) + CStr(n2)
Else
If n2 = "亿" Or n2 = "万" Or n2 = "元" Or n1 = "零" Then
Do While Right(hz, 1) = "零"
hz = Left(hz, Len(hz) - 1)
Loop
End If
If (n2 = "亿" Or (n2 = "万" And Right(hz, 1) <> "亿") Or n2 = "元") Then
hz = hz + CStr(n2)
Else
If Left(Right(hz, 2), 1) = "零" Or Right(hz, 1) <> "亿" Then
hz = hz + n1
End If
End If
End If
n = n + 1
Loop
Do While Right(hz, 1) = "零"
hz = Left(hz, Len(hz) - 1)
Loop
If Right(hz, 1) = "元" Then
hz = hz + "整"
End If
rmb = hz
End Function %>
5.
<%function Money(thenumber)
dim Money,i,String1,String2,length,checkp´定义变量
dim one(),onestr()´定义数组 String1 = "零壹贰叁肆伍陆柒捌玖"
String2 = "万仟佰拾亿仟佰拾万仟佰拾元角分厘毫" checkp=instr(thenumber,".")´判断是否含有小数位
if checkp<>0 then
thenumber=replace(thenumber,".","")´去除小数位
end if length=len(thenumber) ´取得数据长度
redim one(length-1)´重新定义数组大小
redim onestr(length-1)´重新定义数组大小 for i=0 to length-1 one(i)=mid(thenumber,i+1,1) ´循环取得每一位的数字
one(i)=mid(string1,one(i)+1,1)´循环取得数字对应的大写
if checkp=0 then
´不含有小数的数据其数字对应的单位
onestr(i)=mid(string2,14-length+i,1)
else
´含有小数的数据其数字对应的单位
onestr(i)=mid(string2,15-length+i+len(thenumber)-checkp,1)
end if one(i)=one(i)&onestr(i)´将数字与单位组合
next Money=replace(join(one)," ","") ´取得数组中所有的元素,并连接起来
Money=replace(Money,"零元","元")
Money=replace(Money,"零万","万")
Money=replace(Money,"零亿","亿")
Money=replace(Money,"零仟","零")
Money=replace(Money,"零佰","零")
Money=replace(Money,"零拾","零") do while not instr(Money,"零零")=0
Money=replace(Money,"零零","零")
loop response.write Money ´显示结果
end function
%>