转换问题

huijunliang 2011-12-07 02:13:13
我想把整数转换成小写


比如

var num = "1"

就把它转成 一

如果是101 就转成 一百零一

请问怎么写?

看了网上很多数字转大写的例子,写来写去都不对。

我要求很简单 所有数字都是整数,没有小数点,就这样转换。

谢谢!
...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
huijunliang 2011-12-07
  • 打赏
  • 举报
回复
axiheyhey:

运行没有反应,咋回事?

请大家不要把“圆角分” 都算进来,我不要那些,谢谢。
峭沙 2011-12-07
  • 打赏
  • 举报
回复
上面有点小错误,纠正下
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
</head>
<body>
<input id="input" type="text" value="" />
<span id="output"></span>
<script>
//var numChineses = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'],
var numChineses = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"],
units = ['','十','百','千'],
steps = ['','万','亿'];
document.getElementById('input').onchange = function(){
var val = this.value.replace(/\D+/g, '');
this.value = val;
var arr = val.split('').reverse();
var str = '';
if(arr.length > 16){
alert('数值太大');
return;
}
for(var i in arr){
if(i%4 !== 0){
var num = parseInt(arr[i]),
unit = parseInt(arr[i]) === 0 ? '' : units[i%4];
str = numChineses[num] + unit + str;
}else{
var stepIndex = Math.floor(i/4);
stepIndex = stepIndex > 2 ? (stepIndex - 2) : stepIndex;
str = numChineses[parseInt(arr[i])] + steps[stepIndex] + str;
}
}
str = str.replace(/(.)(?=\1)/g, '');
document.getElementById('output').innerHTML = str;
}
</script>
</body>
</html>
峭沙 2011-12-07
  • 打赏
  • 举报
回复
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
</head>
<body>
<input id="input" type="text" value="" />
<span id="output"></span>
<script>
var numChineses = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"],
units = ['','十','百','千'],
steps = ['','万','亿'];
document.getElementById('input').onchange = function(){
var val = this.value.replace(/\D+/g, '');
this.value = val;
var arr = val.split('').reverse();
var str = '';
if(arr.length > 16){
alert('数值太大');
return;
}
for(var i in arr){
if(i%4 !== 0){
var num = parseInt(arr[i]),
unit = parseInt(arr[i]) === 0 ? '' : units[i%4];
str = numChineses[num] + unit + str;
}else{
var stepIndex = Math.floor(i/4);
stepIndex = stepIndex > 2 ? (stepIndex - 2) : stepIndex;
str = numChineses[parseInt(arr[i])] + steps[stepIndex] + str;
}
}
str = str.replace(/(.)\1/g, '');
document.getElementById('output').innerHTML = str;
}
</script>
</body>
</html>
qq307023807 2011-12-07
  • 打赏
  • 举报
回复
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<script language="jscript">
function convertCurrency(currencyDigits) {
// Constants:
var MAXIMUM_NUMBER = 99999999999.99;
// Predefine the radix characters and currency symbols for output:
var CN_ZERO = "零";
var CN_ONE = "壹";
var CN_TWO = "贰";
var CN_THREE = "叁";
var CN_FOUR = "肆";
var CN_FIVE = "伍";
var CN_SIX = "陆";
var CN_SEVEN = "柒";
var CN_EIGHT = "捌";
var CN_NINE = "玖";
var CN_TEN = "拾";
var CN_HUNDRED = "佰";
var CN_THOUSAND = "仟";
var CN_TEN_THOUSAND = "万";
var CN_HUNDRED_MILLION = "亿";
var CN_SYMBOL = "人民币";
var CN_DOLLAR = "元";
var CN_TEN_CENT = "角";
var CN_CENT = "分";
var CN_INTEGER = "整";

// Variables:
var integral; // Represent integral part of digit number.
var decimal; // Represent decimal part of digit number.
var outputCharacters; // The output result.
var parts;
var digits, radices, bigRadices, decimals;
var zeroCount;
var i, p, d;
var quotient, modulus;

// Validate input string:
currencyDigits = currencyDigits.toString();
if (currencyDigits == "") {
alert("Empty input!");
return "";
}
if (currencyDigits.match(/[^,.\d]/) != null) {
alert("Invalid characters in the input string!");
return "";
}
if ((currencyDigits).match(/^((\d{1,3}(,\d{3})*(.((\d{3},)*\d{1,3}))?)|(\d+(.\d+)?))$/) == null) {
alert("Illegal format of digit number!");
return "";
}

// Normalize the format of input digits:
currencyDigits = currencyDigits.replace(/,/g, ""); // Remove comma delimiters.
currencyDigits = currencyDigits.replace(/^0+/, ""); // Trim zeros at the beginning.
// Assert the number is not greater than the maximum number.
if (Number(currencyDigits) > MAXIMUM_NUMBER) {
alert("Too large a number to convert!");
return "";
}

// Process the coversion from currency digits to characters:
// Separate integral and decimal parts before processing coversion:
parts = currencyDigits.split(".");
if (parts.length > 1) {
integral = parts[0];
decimal = parts[1];
// Cut down redundant decimal digits that are after the second.
decimal = decimal.substr(0, 2);
}
else {
integral = parts[0];
decimal = "";
}
// Prepare the characters corresponding to the digits:
digits = new Array(CN_ZERO, CN_ONE, CN_TWO, CN_THREE, CN_FOUR, CN_FIVE, CN_SIX, CN_SEVEN, CN_EIGHT, CN_NINE);
radices = new Array("", CN_TEN, CN_HUNDRED, CN_THOUSAND);
bigRadices = new Array("", CN_TEN_THOUSAND, CN_HUNDRED_MILLION);
decimals = new Array(CN_TEN_CENT, CN_CENT);
// Start processing:
outputCharacters = "";
// Process integral part if it is larger than 0:
if (Number(integral) > 0) {
zeroCount = 0;
for (i = 0; i < integral.length; i++) {
p = integral.length - i - 1;
d = integral.substr(i, 1);
quotient = p / 4;
modulus = p % 4;
if (d == "0") {
zeroCount++;
}
else {
if (zeroCount > 0)
{
outputCharacters += digits[0];
}
zeroCount = 0;
outputCharacters += digits[Number(d)] + radices[modulus];
}
if (modulus == 0 && zeroCount < 4) {
outputCharacters += bigRadices[quotient];
}
}
outputCharacters += CN_DOLLAR;
}
// Process decimal part if there is:
if (decimal != "") {
for (i = 0; i < decimal.length; i++) {
d = decimal.substr(i, 1);
if (d != "0") {
outputCharacters += digits[Number(d)] + decimals[i];
}
}
}
// Confirm and return the final output string:
if (outputCharacters == "") {
outputCharacters = CN_ZERO + CN_DOLLAR;
}
if (decimal == "") {
outputCharacters += CN_INTEGER;
}
outputCharacters = CN_SYMBOL + outputCharacters;
return outputCharacters;
}
</script>
</head>
<body>
<INPUT id="Digits" type="text" name="Digits" size=20>
<INPUT id="Convert" type="button" value="Convert" name="Convert" onclick="Result.value = convertCurrency(Digits.value);">
<INPUT id="Result" type="text" name="Result" size=60>
</body>
</html>
qq307023807 2011-12-07
  • 打赏
  • 举报
回复
2楼可不可以试试再发上来 101变成一百一 应该是一百零一啊
三石-gary 2011-12-07
  • 打赏
  • 举报
回复
[code=HTML]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script>
function Chinese() {
var num = document.getElementById("num").value;


if (!/^\d*(\.\d*)?$/.test(num)) throw (new Error(-1, "Number is wrong!"));

var AA = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九");

var BB = new Array("", "拾", "佰", "仟", "萬", "億", "圆", "");

var a = ("" + num).replace(/(^0*)/g, "").split("."), k = 0, re = "";

for (var i = a[0].length - 1; i >= 0; i--) {

switch (k) {

case 0: re = BB[7] + re; break;

case 4: if (!new RegExp("0{4}\\d{" + (a[0].length - i - 1) + "}$").test(a[0]))

re = BB[4] + re; break;

case 8: re = BB[5] + re; BB[7] = BB[5]; k = 0; break;

}

if (k % 4 == 2 && a[0].charAt(i) == "0" && a[0].charAt(i + 2) != "0") re = AA[0] + re;

if (a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k % 4] + re; k++;

}

alert(re);

}


</script>
</head>
<body>
<input type="text" id="num"/>
<input type="button" value="change" onclick="Chinese()">
</body>
</html>
[/url]
三石-gary 2011-12-07
  • 打赏
  • 举报
回复
http://hi.baidu.com/gradyszl/blog/item/c3630c1a450e9e108618bfb9.html

87,989

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧