Javascript 将字号转换为等效的numaric
从字符串中提取后,我需要将一个美国字号转换为数字。我在这里进行了尝试 i、 e我想把一万四千四百四十转换成它的等价数字--10440。Javascript 将字号转换为等效的numaric,javascript,Javascript,从字符串中提取后,我需要将一个美国字号转换为数字。我在这里进行了尝试 i、 e我想把一万四千四百四十转换成它的等价数字--10440。 function word2numberConverter ( wordNumber) { wordNumber = wordNumber.toLowerCase(); //different notations under hundred var underTen = { 'zero': 0, 'one':
function word2numberConverter ( wordNumber) {
wordNumber = wordNumber.toLowerCase();
//different notations under hundred
var underTen = {
'zero': 0, 'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9
};
var underHundred = {
'ten': 10, 'eleven': 11, 'twelve': 12, 'thirteen': 13,
'fourteen': 14, 'fifteen': 15, 'sixteen': 16, 'seventeen': 17, 'eighteen': 18, 'nineteen': 19, 'twenty': 20,
'thirty': 30, 'forty': 40, 'fifty': 50, 'sixty': 60, 'seventy': 70, 'eighty': 80, 'ninety': 90
};
//different magnitude each after the increament 10 pow 3
var magnitude = {
'thousand': '10^3', 'million':'10^6', 'billion':'10^9', 'trillion':'10^12', 'quadrillion':'10^15',
'quintillion':'10^18', 'sextillion':'10^21', 'septillion':'10^24', 'octillion':'10^27', 'nonillion':'10^30',
'decillion':'10^33', 'undecillion':'10^36', 'duodecillion':'10^39', 'tredecillion':'10^42', 'quattuordecillion':'10^45',
'quindecillion':'10^48','sexdecillion':'10^51', 'septendecillion':'10^54', 'octadecillion':'10^57', 'novemdecillion':'10^60',
'vigintillion':'10^63',
};
//window.console&&console.log(wordNumber);
var wordnumElements = wordNumber.split(/[\s-]+/);
//alert('++++'+wordnumElements);
var num = 0;
var tempnum = 0;
var isUnderHundred = 0;
var isHundred = 0;
var isMagnitude = 0;
var isUnderTen = 0;
var isValidNum = 1;
var element = '';
var wordnumElementsLength = wordnumElements.length;
for (var i=0;i < wordnumElementsLength; i++) {
element = wordnumElements[i];
window.console&&console.log(element);
//wordnumElements.forEach(function( element ) {
if(!isValidNum) {
//if invalid number then return
break;
}
var temp = underTen[element];
if(temp != null) {
if(isUnderTen) {
//can't be a valid number
isValidNum = 0;
} else {
tempnum = tempnum + temp;
isUnderTen =1;
//reset isHundred , isUnderHundred and isMagnitude
isHundred = 0;
isUnderHundred = 0;
isMAgnitude = 0;
}
} else {
var temp = underHundred[element];
if(temp != null) {
if(isUnderHundred){
//can't be a valid number
isValidNum = 0;
} else {
tempnum = tempnum + temp;
isUnderHundred = 1;
//reset isHundred , isUnderTen and isMagnitude
isUnderTen = 0;
isHundred = 0;
isMagnitude = 0;
}
} else {
if ( element == "hundred" ) {
if(isHundred || isUnderHundred) { // there can never be underHundred string before valid american wordnumber like one thousand forty hundred is invalid
//not a valid number
isValidNum = 0;
} else {
isHundred =1;
//reset underHundred and isMagnitude
isUnderHundred = 0;
isMagnitude = 0;
isUnderTen = 0;
}
if(!tempnum) { // to give support for one thousand hundred forty as 1140
tempnum = 1;
}
tempnum = tempnum *100;
} else {
temp = magnitude[element];
if(temp ){
if(isMagnitude == 1) {
//not a valid number
isValidNum = 0;
} else {
isMagnitude = 1;
//reset isUnderHundred and isHundred
isUnderHundred = 0;
isHundred = 0;
isUnderTen = 0;
}
var val = temp.split(/\^/);
temp = Math.pow(val[0],val[1]);
window.console&&console.log('num--'+num);
window.console&&console.log('tempnum--'+tempnum);
window.console&&console.log('temp--'+temp)
if( temp != null) {
if(num && isMagnitude && temp > num) {
window.console&&console.log('i m --> num * temp + tempnum===>'+num+'--'+temp+'--'+tempnum);
num = (num + tempnum)* temp;
} else {
window.console&&console.log('i m addition--> num + tempnum * temp===>'+num+'--'+tempnum+'--'+temp);
num = num + tempnum * temp;
}
tempnum = 0;
} else {
isValidWordNum = 0;
}
}
}
}
}
window.console&&console.log('enum--'+num);
window.console&&console.log('etempnum--'+tempnum);
window.console&&console.log('etemp--'+temp);
}
num = num + tempnum;
alert("final num-"+num);
if(!isValidNum) {
return wordNumber;
} else {
return num;
}
}
函数word2numberConverter(wordNumber){
wordNumber=wordNumber.toLowerCase();
//百分制下的不同符号
十岁以下的var={
“零”:0,“一”:1,“二”:2,“三”:3,“四”:4,“五”:5,“六”:6,“七”:7,“八”:8,“九”:9
};
百分之一百以下的风险值={
十、十、十一、十一、十二、十二、十三、十三、,
十四、十四、十五、十五、十六、十六、十七、十七、十八、十八、十九、十九、二十、二十、,
三十、三十、四十、四十、五十、五十、六十、六十、七十、七十、八十、八十、九十、九十
};
//每增加10波3后的不同震级
var幅值={
‘千’:‘10^3’,‘百万’:‘10^6’,‘十亿’:‘10^9’,‘万亿’:‘10^12’,‘万亿’:‘10^15’,
“五百万”:“10^18”,“六百万”:“10^21”,“七百万”:“10^24”,“八百万”:“10^27”,“诺百万”:“10^30”,
“10^33”、“10^36”、“duodecillion”、“10^39”、“tredecillion”、“10^42”、“Quattourdecillion”、“10^45”,
“十五分之一”:“10^48”,“十六分之一”:“10^51”,“七分之一”:“10^54”,“八分之一”:“10^57”,“十一分之一”:“10^60”,
“活力四射”:“10^63”,
};
//window.console&&console.log(wordNumber);
var-wordnumElements=wordNumber.split(/[\s-]+/);
//警报('++'+字元素);
var num=0;
var-tempnum=0;
var低于100=0;
var isHundred=0;
var Ismagnity=0;
var小于等于0;
var isValidNum=1;
var元素=“”;
var wordnumElementsLength=wordnumElements.length;
对于(变量i=0;inum){
window.console&&console.log('i m-->num*temp+tempnum====>'+num+'--'+temp+'--'+tempnum);
num=(num+tempnum)*temp;
}否则{
window.console&&console.log('i m addition-->num+tempnum*temp===>'+num+'--'+tempnum+'--'+temp);
num=num+tempnum*temp;
}
tempnum=0;
}否则{
isValidWordNum=0;
}
}
}
}
}
window.console&&console.log('enum--'+num);
window.console&&console.log('etempnum--'+tempnum);
window.console&&console.log('etemp--'+temp);
}
num=num+tempnum;
警报(“最终数量-”+num);
如果(!isValidNum){
返回字号;