如把 七十四=>74 一百三十六=>136
解决方案 »
- 大侠们,求助。。
- extjs3.2.1 findbyid
- 为何给当前点击的事件添加样式不成功,请高手指教
- Math.atan2 是什么东西???谁用过
- WEB打印时,纸张都是默为A4,可是我想实现每次打印时,都是默为A3.
- js 防止用户输入~
- JQuery Uploadify隐藏浏览按钮后,通过JS触发Uploadify的Click事件,不能上传文件
- 怎样样用javascript获取地址栏?后面的数据
- 鼠标放上一个图片时,该处的图片被代替成另一个图.要实现这样的功能,用JS怎么写.
- HTML DOM childNodes的疑问
- 用poi实现word在IE下打开在线编辑保存的功能
- document.write();在不同页面中的输入?
先要获取一个完整的大写数字str
先从左边判断起
看你判断的范围了
比如从万
那么就先判断是否有“万”
然后获取左边的数字转换成阿拉伯数字
比如“八万四千二十”获取了“八万”转换成了80000
然后继续获取万右边的
从千获取同样方法转换成4000
继续获取百,没有
继续获取十,转换成20
然后把所有的相加就成了84020应该是一种递归算法
具体的楼主自己写
<!--
function cn2alb(str){
var cnunit = new Array('个','十','百','千','万','亿');
var albunit = new Array(1,10,100,1000,10000,100000000);
var cn = new Array('零','一','二','三','四','五','六','七','八','九','十');
var alb = new Array(0,1,2,3,4,5,6,7,8,9,10); var rs = 0;
for(var i = 0; i < str.length; i ++){
var tmp = 0;
var _cn = inarray(str.charAt(i), cn)
if(_cn != -1){
tmp = alb[_cn];
i ++;
}
var _cnunit =inarray(str.charAt(i), cnunit)
if(_cnunit != -1){
tmp *= albunit[_cnunit];
}else{
var _cn = inarray(str.charAt(i), cn)
if(_cn != -1){
tmp += alb[_cn];
}
}
rs += tmp;
}
alert(rs);
}
function inarray(v, arr){
for(var i = 0; i < arr.length; i ++){
if(v == arr[i])return i;
}
return -1;
}cn2alb('七十四');
cn2alb('一百三十六');
cn2alb('十四');
//-->
</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
</head> <body>
<script type="text/javascript">
String.prototype.convertToNumber=function(){
var numbers = {"零":0,"一":1,"二":2,"三":3,"四":4,"五":5,"六":6,"七":7,"八":8,"九":9};
var multiple = {"十":10,"百":100,"千":1000,"万":10000,"亿":100000000};
var result = 0;
for(var i=0;i<this.length;i++){
if(numbers[this.charAt(i)]){
var temp = numbers[this.charAt(i)];
for(var j=i+1;j<this.length;j++){
if(!multiple[this.charAt(j)]){
break;
}
temp *= multiple[this.charAt(j)];
}
result += temp;
}
}
return result;
} alert("一百七十四".convertToNumber());
</script>
</body>
</html>
知道Array不能有key,,,没想到有 map key-value
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
</head> <body>
<script type="text/javascript">
String.prototype.convertToNumber=function(){
var numbers = {"零":0,"一":1,"二":2,"三":3,"四":4,"五":5,"六":6,"七":7,"八":8,"九":9,"十":10};
var multiple = {"个":1,"十":10,"百":100,"千":1000,"万":10000,"亿":100000000};
var result = 0;
for(var i=0;i<this.length;i++){
var temp = 0;
if(numbers[this.charAt(i)]){
temp = numbers[this.charAt(i)];
i ++;
}
if(i == this.length)return result + temp; if(multiple[this.charAt(i)]){
temp *= multiple[this.charAt(i)];
}else{
i --;
}
result += temp;
}
return result;
} alert("一百七十四".convertToNumber());
alert("十四".convertToNumber());//楼上的这里有错
</script>
</body>
</html>
<!--
function cn2alb(str){
var cnunit = new Array('十','百','千','万','亿');
var albunit = new Array(10,100,1000,10000,100000000);
var cn = new Array('零','一','二','三','四','五','六','七','八','九');
var alb = new Array(0,1,2,3,4,5,6,7,8,9); var rs = 0;
var ui = -1;
for(var i = 0; i < str.length; i ++){
var tmp = 0; var _cn = inarray(str.charAt(i), cn)
if(_cn != -1){
tmp += alb[_cn];
i ++;
} var _cnunit =inarray(str.charAt(i), cnunit)
var _flag = false;
if(_cnunit != -1){
if(_cnunit > ui){
if(ui != -1)_flag = true;
ui = _cnunit;
}
if(_flag){
rs += tmp;
rs *= albunit[_cnunit];
}else{
if(tmp == 0)tmp = 1;
tmp *= albunit[_cnunit];
}
}else{
i --;
}
if(!_flag)rs += tmp;
}
alert(rs);///////////////////
}
function inarray(v, arr){
for(var i = 0; i < arr.length; i ++){
if(v == arr[i])return i;
}
return -1;
}cn2alb('十');
cn2alb('十八');
cn2alb('一百一十八');
cn2alb('一百三十六');
cn2alb('十八万');
cn2alb('一百一十八万零一');
cn2alb('一百万零一十八');
//-->
</script>
<html>
<head>
<title> New Document </title>
</head> <body>
<script type="text/javascript">
String.prototype.convertToNumber=function(){
var numbers = {"一":1,"二":2,"三":3,"四":4,"五":5,"六":6,"七":7,"八":8,"九":9};
var multiple = {"十":10,"百":100,"千":1000,"万":10000,"亿":100000000};
var result = 0;
var l = 1;//十、百、千单位
var k = 1;//万单位
var j = 1;//亿单位
for(var i=this.length-1;i>=0;i--){
if(numbers[this.charAt(i)]){
result += l*numbers[this.charAt(i)];
l = 1;
}else if(multiple[this.charAt(i)]){
if(l==10){//特殊处理十
result += l;
}
if(multiple[this.charAt(i)]==100000000){
k = 1;
}
l = k*j*multiple[this.charAt(i)];
if(multiple[this.charAt(i)]==10000){
k = k*multiple[this.charAt(i)];
}else if(multiple[this.charAt(i)]==100000000){
j = j*multiple[this.charAt(i)];
}
}
}
if(l!=1){
result += l;
}
return result;
} alert("十四".convertToNumber());
</script>
</body>
</html>