jsp数字转换汉字 我们的需求很简单,传过来3转换成三就成。问问大家有没有最简单的办法。最好能在页面中直接处理了,不行就用java~谢谢了~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我有个金额转换的js,你拿去根据实际需要改改<script type="text/javascript">var Nums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"); var Digits = new Array("", "拾", "佰", "仟"); var Units = new Array("", "万", "亿", "万亿","仟兆"); /*** 检查字符串是否为合法的金额* @param {String} 字符串* @return {bool} 是否为合法金额*/function isMoney(s) { var isMoney = RegExp(/^[0-9]*\.?[0-9]{0,2}$/); return ( isMoney.test(s) );}/*** 判断输入变量是否是浮点数* @param {String} 要检查的变量值* @return {bool} 是否为浮点数*/function isFloat( s ){ var isFloat = RegExp(/^([0-9]+(\.+))[0-9]+$/); return ( isFloat.test(s) );}/*** 检查指定的input中输入的金额是否合法,如果合法返回金额,否则返回null* @param {String} 要检查的input的id*/function getMoney(inputName){ var money = document.getElementById(inputName).value; if ( money !=null && money.length>0 ) { return removeComma( money ); }else{ return null; }}/*** 检查指定的input中输入的金额是否合法,并进行显示转换* @param {String} 要检查的input的id*/function checkMoney(inputName){ var input = document.getElementById(inputName); if ( isEmpty( input.value ) ) { return false; } var testMoney = removeComma( input.value ); if ( isMoney( testMoney ) ) { input.value = toCashWithCommaAndDot( testMoney ); return true; }else{ input.value = ""; input.focus(); return false; }} /*** 转换为中文金额表示* @param {String} 要转换的金额字符串* @return {String} 转换后的金额字符串*/function toChineseCash( cash ){ var noCommaCash = removeComma(cash); if( !isFloat( noCommaCash ) ) return convertIntegerToChineseCash(noCommaCash); var dotIndex = noCommaCash.indexOf('.'); var integerCash = noCommaCash.substring( 0, dotIndex ); var decimalCash = noCommaCash.substring( dotIndex + 1 ); return convertIntegerToChineseCash(integerCash)+convertDecimalToChineseCash(decimalCash);}/*** 为金额添加,分割符* @param {String} 要转换的金额字符串* @return {String} 转换后的金额字符串*/function toCashWithComma( cash ){ while( cash.charAt(0) == '0' ) { cash = cash.substr(1); } if( !isFloat( cash ) ) return addComma(cash); var dotIndex = cash.indexOf('.'); var integerCash = cash.substring( 0, dotIndex ); var decimalCash = cash.substring( dotIndex ); return addComma(integerCash)+decimalCash;}/*** 为金额添加,分割符和.分割符* @param {String} 要转换的金额字符串* @return {String} 转换后的金额字符串*/function toCashWithCommaAndDot( cash ){ var temp = toCashWithComma( cash ); if ( temp.length == 0 ) { return "0.00"; } var dotPos = temp.indexOf("."); if ( dotPos < 0 ) { return temp+'.00'; } if ( dotPos == 0 ) { temp = '0' + temp; dotPos = temp.indexOf("."); } if ( dotPos == temp.length-2) { return temp + '0'; } if ( dotPos == temp.length-1) { return temp + '00'; } return temp;}function convertIntegerToChineseCash(cash){ if ( cash == "0" ) return ""; var S = ""; //返回值 var p = 0; //字符位置指针 var m = cash.length % 4; //取模 // 四位一组得到组数 var k = (m > 0 ? Math.floor(cash.length / 4) + 1 : Math.floor(cash.length / 4)); // 外层循环在所有组中循环 // 从左到右 高位到低位 四位一组 逐组处理 // 每组最后加上一个单位: "[万亿]","[亿]","[万]" for (var i = k; i > 0; i--) { var L = 4; if (i == k && m != 0) { L = m; } // 得到一组四位数 最高位组有可能不足四位 var s = cash.substring(p, p + L); var l = s.length; // 内层循环在该组中的每一位数上循环 从左到右 高位到低位 for (var j = 0;j < l;j++) { var n = parseInt(s.substring(j, j+1)); if (n == 0) { if ((j < l - 1) && (parseInt(s.substring(j + 1, j + 1+ 1)) > 0) //后一位(右低) && S.substring(S.length-1,S.length) != Nums[n]) { S += Nums[n]; } } else { //处理 1013 一千零"十三", 1113 一千一百"一十三" if (!(n == 1 && (S.substring(S.length-1,S.length) == Nums[0] | S.length == 0) && j == l - 2)) { S += Nums[n]; } S += Digits[l - j - 1]; } } p += L; // 每组最后加上一个单位: [万],[亿] 等 if (i < k)//不是最高位的一组 { if (parseInt(s)!= 0) { //如果所有 4 位不全是 0 则加上单位 [万],[亿] 等 S += Units[i - 1]; } } else { //处理最高位的一组,最后必须加上单位 S += Units[i - 1]; } } //alert(S); return S+"圆";}function convertDecimalToChineseCash( cash ){ var returnCash = ""; if ( cash == "00" ) returnCash = "整"; else { for( var i = 0;i < cash.length; i++ ) { if( i >= 2 ) break; var intValue = parseInt(cash.charAt(i)); switch( i ) { case 0: if ( intValue != 0 ) returnCash += Nums[intValue]+"角"; break; case 1: returnCash += Nums[intValue]+"分"; break; default: break; } } } return returnCash; }function addComma(str) { if (str.length > 3) { var mod = str.length % 3; var output = (mod > 0 ? (str.substring(0,mod)) : ''); for (i=0 ; i < Math.floor(str.length / 3); i++) { if ((mod == 0) && (i == 0)) output += str.substring(mod+ 3 * i, mod + 3 * i + 3); else output += ',' + str.substring(mod + 3 * i, mod + 3 * i + 3); } return (output); } else return str;}function removeComma(str){ return str.replace(new RegExp('\,',["g"]),'');}</script>你可以把它放在一个单独的js文件里用java代码写法也差不多 <script language="javascript"> function replaceReg(reg,str){ return str.replace(reg,function(m){return arr[m];}) } arr=new Array("零","一","二","三","四","五","六","七","八","九"); var reg = /\d/g; var str = =document.getElementsByName("payoffBounty")[0].value; document.write(replaceReg(reg,str)+'<br />'); </script>把"payoffBounty"换成你的文本框的property <script language="javascript"> function replaceReg(reg, str) { return str.replace(reg, function(m) { return arr[m]; }) } arr = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九"); var reg = /\d/g; var str = '3'; document.write(replaceReg(reg, str) + '<br />');</script>如果是转换金额的话 1楼的就可以了 用java处理金钱public class TestMoney { public static void main(String[] args) { System.out.println(convertToChineseNumber(19.8)); } public static String convertToChineseNumber(double number) { StringBuffer chineseNumber = new StringBuffer(); String[] num = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; String[] unit = { "分", "角", "圆", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "万" }; String tempNumber = String.valueOf(Math.round((number * 100))); int tempNumberLength = tempNumber.length(); if ("0".equals(tempNumber)) { return "零圆整"; } if (tempNumberLength > 15) { try { throw new Exception("超出转化范围."); } catch (Exception e) { e.printStackTrace(); } } boolean preReadZero = true; // 前面的字符是否读零 for (int i = tempNumberLength; i > 0; i--) { if ((tempNumberLength - i + 2) % 4 == 0) { // 如果在(圆,万,亿,万)位上的四个数都为零,如果标志为未读零,则只读零,如果标志为已读零,则略过这四位 if (i - 4 >= 0 && "0000".equals(tempNumber.substring(i - 4, i))) { if (!preReadZero) { chineseNumber.insert(0, "零"); preReadZero = true; } i -= 3; // 下面还有一个i-- continue; } // 如果当前位在(圆,万,亿,万)位上,则设置标志为已读零(即重置读零标志) preReadZero = true; } Integer digit = Integer.parseInt(tempNumber.substring(i - 1, i)); if (digit == 0) { // 如果当前位是零并且标志为未读零,则读零,并设置标志为已读零 if (!preReadZero) { chineseNumber.insert(0, "零"); preReadZero = true; } // 如果当前位是零并且在(圆,万,亿,万)位上,则读出(圆,万,亿,万) if ((tempNumberLength - i + 2) % 4 == 0) { chineseNumber.insert(0, unit[tempNumberLength - i]); } } // 如果当前位不为零,则读出此位,并且设置标志为未读零 else { chineseNumber .insert(0, num[digit] + unit[tempNumberLength - i]); preReadZero = false; } } // 如果分角两位上的值都为零,则添加一个“整”字 if (tempNumberLength - 2 >= 0 && "00".equals(tempNumber.substring(tempNumberLength - 2, tempNumberLength))) { chineseNumber.append("整"); } return chineseNumber.toString(); }} package com;public class Test{ private static String changeValue(int i){ if(i < 0 || i > 9){ return "非法输入"; }else { String[] nums = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; return nums[i]; } } public static void main(String[] args){ System.out.println(changeValue(3)); System.out.println(changeValue(-1)); System.out.println(changeValue(7)); }}页面引入Test类<% System.out.println(Test.changeValue("你想转换的数字"));%> 都是强人!!!厉害,代码贴得漫天飞!!请问有没有 WINDOWXP SP2 的源代码,参考下,谢谢。贴出来就更好了。 JavaScript // 数字金额转换汉字金额 FUNCTION ATOC(NUMBERVALUE) IF (NUMBERVALUE==0) STRING2 = STRING2.SUBSTR(STRING2.LENGTH-LEN, LEN); // 取出对应位数的STRING2的值 FOR(VAR I=0; I<LEN; I++)ELSE IF ( STRING3 != 0 && NZERO != 0 )ELSE }ELSE{ // 该位是万亿,亿,万,元位等关键位 IF( STRING3 != 0 && NZERO != 0 )ELSE IF ( STRING3 != 0 && NZERO == 0 )ELSE IF( STRING3 == 0 && NZERO >= 3 )ELSE IF( I == (LEN - 11) || I == (LEN - 3)) } CHINESEVALUE = CHINESEVALUE + CH1 + CH2; } IF ( STRING3 == 0 ) RETURN CHINESEVALUE; } HttpClient获得人人主页的东西,但是缺少一些代码 web项目打包成exe,客户安装之后,tomcat启动的问题 JSPGenCMS 20100820 到 20101010 升级程序 模拟用户登录模块错误 多个servlet怎么在web.xml里注册阿 Jsp调用Jfreechart作图形 初学者想问一下什么是SWT? 数据库连接不上阿,帮个忙! 这个问题总是弄不懂?请帮忙,谢谢! 程序更新的时候总是更新漏了,谁有好的解决办法哦 关于AJAX的一个小例子,页面接收不到回传的值,整个项目代码我都放上去了,各位牛人可以看看运行一下,谢谢各位牛人 spring和struts集成出错,帮忙看看
var Nums = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");
var Digits = new Array("", "拾", "佰", "仟");
var Units = new Array("", "万", "亿", "万亿","仟兆"); /**
* 检查字符串是否为合法的金额
* @param {String} 字符串
* @return {bool} 是否为合法金额
*/
function isMoney(s)
{
var isMoney = RegExp(/^[0-9]*\.?[0-9]{0,2}$/);
return ( isMoney.test(s) );
}/**
* 判断输入变量是否是浮点数
* @param {String} 要检查的变量值
* @return {bool} 是否为浮点数
*/
function isFloat( s )
{
var isFloat = RegExp(/^([0-9]+(\.+))[0-9]+$/);
return ( isFloat.test(s) );
}/**
* 检查指定的input中输入的金额是否合法,如果合法返回金额,否则返回null
* @param {String} 要检查的input的id
*/
function getMoney(inputName)
{
var money = document.getElementById(inputName).value;
if ( money !=null && money.length>0 )
{
return removeComma( money );
}else{
return null;
}
}/**
* 检查指定的input中输入的金额是否合法,并进行显示转换
* @param {String} 要检查的input的id
*/
function checkMoney(inputName)
{
var input = document.getElementById(inputName);
if ( isEmpty( input.value ) )
{
return false;
}
var testMoney = removeComma( input.value );
if ( isMoney( testMoney ) )
{
input.value = toCashWithCommaAndDot( testMoney );
return true;
}else{
input.value = "";
input.focus();
return false;
}
} /**
* 转换为中文金额表示
* @param {String} 要转换的金额字符串
* @return {String} 转换后的金额字符串
*/
function toChineseCash( cash )
{
var noCommaCash = removeComma(cash);
if( !isFloat( noCommaCash ) )
return convertIntegerToChineseCash(noCommaCash);
var dotIndex = noCommaCash.indexOf('.');
var integerCash = noCommaCash.substring( 0, dotIndex );
var decimalCash = noCommaCash.substring( dotIndex + 1 );
return convertIntegerToChineseCash(integerCash)+convertDecimalToChineseCash(decimalCash);
}/**
* 为金额添加,分割符
* @param {String} 要转换的金额字符串
* @return {String} 转换后的金额字符串
*/
function toCashWithComma( cash )
{
while( cash.charAt(0) == '0' )
{
cash = cash.substr(1);
}
if( !isFloat( cash ) )
return addComma(cash);
var dotIndex = cash.indexOf('.');
var integerCash = cash.substring( 0, dotIndex );
var decimalCash = cash.substring( dotIndex );
return addComma(integerCash)+decimalCash;
}/**
* 为金额添加,分割符和.分割符
* @param {String} 要转换的金额字符串
* @return {String} 转换后的金额字符串
*/
function toCashWithCommaAndDot( cash )
{
var temp = toCashWithComma( cash );
if ( temp.length == 0 )
{
return "0.00";
}
var dotPos = temp.indexOf(".");
if ( dotPos < 0 )
{
return temp+'.00';
}
if ( dotPos == 0 )
{
temp = '0' + temp;
dotPos = temp.indexOf(".");
}
if ( dotPos == temp.length-2)
{
return temp + '0';
}
if ( dotPos == temp.length-1)
{
return temp + '00';
}
return temp;
}function convertIntegerToChineseCash(cash)
{
if ( cash == "0" )
return "";
var S = ""; //返回值
var p = 0; //字符位置指针
var m = cash.length % 4; //取模 // 四位一组得到组数
var k = (m > 0 ? Math.floor(cash.length / 4) + 1 : Math.floor(cash.length / 4));
// 外层循环在所有组中循环
// 从左到右 高位到低位 四位一组 逐组处理
// 每组最后加上一个单位: "[万亿]","[亿]","[万]"
for (var i = k; i > 0; i--)
{
var L = 4;
if (i == k && m != 0)
{
L = m;
}
// 得到一组四位数 最高位组有可能不足四位
var s = cash.substring(p, p + L);
var l = s.length; // 内层循环在该组中的每一位数上循环 从左到右 高位到低位
for (var j = 0;j < l;j++)
{
var n = parseInt(s.substring(j, j+1));
if (n == 0)
{
if ((j < l - 1) && (parseInt(s.substring(j + 1, j + 1+ 1)) > 0) //后一位(右低)
&& S.substring(S.length-1,S.length) != Nums[n])
{
S += Nums[n];
}
}
else
{
//处理 1013 一千零"十三", 1113 一千一百"一十三"
if (!(n == 1 && (S.substring(S.length-1,S.length) == Nums[0] | S.length == 0) && j == l - 2))
{
S += Nums[n];
}
S += Digits[l - j - 1];
}
}
p += L;
// 每组最后加上一个单位: [万],[亿] 等
if (i < k)//不是最高位的一组
{
if (parseInt(s)!= 0)
{
//如果所有 4 位不全是 0 则加上单位 [万],[亿] 等
S += Units[i - 1];
}
}
else
{
//处理最高位的一组,最后必须加上单位
S += Units[i - 1];
}
}
//alert(S);
return S+"圆";
}function convertDecimalToChineseCash( cash )
{
var returnCash = "";
if ( cash == "00" )
returnCash = "整";
else
{
for( var i = 0;i < cash.length; i++ )
{
if( i >= 2 )
break;
var intValue = parseInt(cash.charAt(i));
switch( i )
{
case 0:
if ( intValue != 0 )
returnCash += Nums[intValue]+"角";
break;
case 1:
returnCash += Nums[intValue]+"分";
break;
default:
break;
}
}
}
return returnCash;
}function addComma(str) {
if (str.length > 3)
{
var mod = str.length % 3;
var output = (mod > 0 ? (str.substring(0,mod)) : '');
for (i=0 ; i < Math.floor(str.length / 3); i++) {
if ((mod == 0) && (i == 0))
output += str.substring(mod+ 3 * i, mod + 3 * i + 3);
else
output += ',' + str.substring(mod + 3 * i, mod + 3 * i + 3);
}
return (output);
}
else return str;
}function removeComma(str)
{
return str.replace(new RegExp('\,',["g"]),'');
}
</script>你可以把它放在一个单独的js文件里
用java代码写法也差不多
<script language="javascript">
function replaceReg(reg,str){
return str.replace(reg,function(m){return arr[m];})
}
arr=new Array("零","一","二","三","四","五","六","七","八","九");
var reg = /\d/g;
var str = =document.getElementsByName("payoffBounty")[0].value;
document.write(replaceReg(reg,str)+'<br />'); </script>把"payoffBounty"换成你的文本框的property
<script language="javascript">
function replaceReg(reg, str) {
return str.replace(reg, function(m) {
return arr[m];
})
}
arr = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九");
var reg = /\d/g;
var str = '3'; document.write(replaceReg(reg, str) + '<br />');
</script>
如果是转换金额的话 1楼的就可以了
public class TestMoney { public static void main(String[] args) { System.out.println(convertToChineseNumber(19.8));
} public static String convertToChineseNumber(double number) {
StringBuffer chineseNumber = new StringBuffer();
String[] num = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
String[] unit = { "分", "角", "圆", "拾", "佰", "仟", "万", "拾", "佰", "仟",
"亿", "拾", "佰", "仟", "万" };
String tempNumber = String.valueOf(Math.round((number * 100)));
int tempNumberLength = tempNumber.length();
if ("0".equals(tempNumber)) {
return "零圆整";
}
if (tempNumberLength > 15) {
try {
throw new Exception("超出转化范围.");
} catch (Exception e) {
e.printStackTrace();
}
}
boolean preReadZero = true; // 前面的字符是否读零
for (int i = tempNumberLength; i > 0; i--) {
if ((tempNumberLength - i + 2) % 4 == 0) {
// 如果在(圆,万,亿,万)位上的四个数都为零,如果标志为未读零,则只读零,如果标志为已读零,则略过这四位
if (i - 4 >= 0 && "0000".equals(tempNumber.substring(i - 4, i))) {
if (!preReadZero) {
chineseNumber.insert(0, "零");
preReadZero = true;
}
i -= 3; // 下面还有一个i--
continue;
}
// 如果当前位在(圆,万,亿,万)位上,则设置标志为已读零(即重置读零标志)
preReadZero = true;
}
Integer digit = Integer.parseInt(tempNumber.substring(i - 1, i));
if (digit == 0) {
// 如果当前位是零并且标志为未读零,则读零,并设置标志为已读零
if (!preReadZero) {
chineseNumber.insert(0, "零");
preReadZero = true;
}
// 如果当前位是零并且在(圆,万,亿,万)位上,则读出(圆,万,亿,万)
if ((tempNumberLength - i + 2) % 4 == 0) {
chineseNumber.insert(0, unit[tempNumberLength - i]);
}
}
// 如果当前位不为零,则读出此位,并且设置标志为未读零
else {
chineseNumber
.insert(0, num[digit] + unit[tempNumberLength - i]);
preReadZero = false;
}
}
// 如果分角两位上的值都为零,则添加一个“整”字
if (tempNumberLength - 2 >= 0
&& "00".equals(tempNumber.substring(tempNumberLength - 2,
tempNumberLength))) {
chineseNumber.append("整");
}
return chineseNumber.toString();
}
}
package com;
public class Test{
private static String changeValue(int i){
if(i < 0 || i > 9){
return "非法输入";
}else {
String[] nums = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
return nums[i];
}
}
public static void main(String[] args){
System.out.println(changeValue(3));
System.out.println(changeValue(-1));
System.out.println(changeValue(7));
}
}页面引入Test类
<%
System.out.println(Test.changeValue("你想转换的数字"));
%>
JavaScript
// 数字金额转换汉字金额
FUNCTION ATOC(NUMBERVALUE)
IF (NUMBERVALUE==0)
STRING2 = STRING2.SUBSTR(STRING2.LENGTH-LEN, LEN); // 取出对应位数的STRING2的值
FOR(VAR I=0; I<LEN; I++)ELSE IF ( STRING3 != 0 && NZERO != 0 )ELSE
}ELSE{ // 该位是万亿,亿,万,元位等关键位
IF( STRING3 != 0 && NZERO != 0 )ELSE IF ( STRING3 != 0 && NZERO == 0 )ELSE IF( STRING3 == 0 && NZERO >= 3 )ELSE
IF( I == (LEN - 11) || I == (LEN - 3))
}
CHINESEVALUE = CHINESEVALUE + CH1 + CH2;
}
IF ( STRING3 == 0 )
RETURN CHINESEVALUE;
}