将字符串转换为数字并在javascript之前添加零

时间:2011-10-05 03:19:06

标签: javascript html

我需要编写一个javascript程序,要求用户输入一个小写字符串 字符然后打印其相应的两位数代码。例如,如果 输入为“home”,输出应为08151305。 到目前为止,我可以让它返回正确的数字,但我不能让它在数字前加零,如果它是一个数字 这就是我所拥有的:

<html>
<head>
<script type="text/javascript">
function show_prompt()
{
    var name = prompt("Please enter a string of lowercase characters");
    document.write(name,'<br>');
    document.write('Length of the input is ', name.length,'<br>');
    document.write("<br>")


    for (i=0; i < name.length; i++)
    {
        {
        document.write(i, ", ",name.charCodeAt(i) - 96, '<br>');
        }
    }

}
</script>
</head>
<body>

<input type="button" onClick="show_prompt()"value="CSE 201 HW#4 Problem 3"/>

</body>
</html>

4 个答案:

答案 0 :(得分:1)

那么你可以检查它是否是一个数字,如果是,则前缀为“0”:

function padToTwoDigits(c) {
   // convert to string and check length
   c = "" + c;
   return c.length === 1 ? "0" + c : c;

   // or work with it as a number:
   return c >=0 && c <=9 ? "0" + c : c;
}

// then within your existing code
document.write(i, ", ",padToTwoDigits(name.charCodeAt(i) - 96), '<br>');

当然,这些只是让你入门的一些想法。你可以稍微提高一点,例如,你可以用一个参数来创建一个更通用的pad函数来说明要填充的位数。

答案 1 :(得分:1)

您可以编写自己的打击垫功能,例如:

function pad(number) {       
     return (number < 10 ? '0' : '') + number       
}

并使用pad函数,如:

 document.write(i, ", ",pad(name.charCodeAt(i) - 96), '<br>');

答案 2 :(得分:0)

试试这个。

function show_prompt() {
    var name = prompt("Please enter a string of lowercase characters");
    document.write(name, '<br>');
    document.write('Length of the input is ', name.length, '<br>');
    document.write("<br>")
    for (i = 0; i < name.length; i++) {
        var n = name.charCodeAt(i) - 96;
        document.write(i, ", ", n < 10 ? "0" + n : n, '<br>');
    }

}

答案 3 :(得分:0)

我在这里写了一个快速示例: http://jsfiddle.net/ZPvZ8/3/

我写了一个原型方法给String来处理填充零。

String.prototype.pad = function(char, len){
    var chars = this.split();
    var initialLen = len - this.length;
    for(var i = 0; i < initialLen; i++){
        chars.unshift(char);
    }

    return chars.join('');
};

我将其转换为数组,然后使用填充字符添加元素。我选择使用数组,因为执行字符串操作是一项昂贵的操作(内存和CPU使用成本很高)。

要在你的程序中使用它,你只需要这样称呼它:

    var res = new Array();
    for (var i = 0; i < name.length; i++) {
        var strCode = (name.charCodeAt(i) - 96).toString();
        res.push(strCode.pad('0', 2));
    }
    document.write(res.join(''));