【问题标题】:String.Format in Javascript?Javascript中的String.Format?
【发布时间】:2011-06-02 21:38:32
【问题描述】:

在 C# 中,每当我想打印我使用过的两位数字时

int digit=1;
Console.Write(digit.ToString("00"));

如何在 Javascript 中执行相同的操作?
谢谢

【问题讨论】:

标签: javascript string formatting


【解决方案1】:

c# digit.toString("00")digit 的左侧附加一个零(左侧填充)。在 javascript 中,我使用这个函数:

function zeroPad(nr,base){
  var  len = (String(base).length - String(nr).length)+1;
  return len > 0? new Array(len).join('0')+nr : nr;
}
zeroPad(1,10);   //=> 01
zeroPad(1,100);  //=> 001
zeroPad(1,1000); //=> 0001

您也可以将其重写为 Number 的扩展:

Number.prototype.zeroPad = Number.prototype.zeroPad || 
     function(base){
       var nr = this, len = (String(base).length - String(nr).length)+1;
       return len > 0? new Array(len).join('0')+nr : nr;
    };
 //usage:
(1).zeroPad(10);   //=> 01
(1).zeroPad(100);  //=> 001
(1).zeroPad(1000); //=> 0001

[编辑 oct. 2021]

一个静态的 es20xx Number 方法,也适用于负数。

Number.padLeft = (nr, len = 2, padChr = `0`) => 
  `${nr < 0 ? `-` : ``}${`${Math.abs(nr)}`.padStart(len, padChr)}`;
console.log(Number.padLeft(3));
console.log(Number.padLeft(284, 5));
console.log(Number.padLeft(-32, 12));
console.log(Number.padLeft(-0)); // Note: -0 is not < 0

【讨论】:

  • 应该注意,这不适用于负数,即它只能用于正数。 (之所以这么说,是因为我正在寻找一种类似的也可以处理负数的格式化程序。)
  • 我想指出,8 年后,这就是 padStart 所做的,主要浏览器都支持。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
【解决方案2】:

我通常只是做类似的事情 ("00000000"+nr).slice(-base) 其中nr 是数字,base 是您想要结束的位数。

【讨论】:

    【解决方案3】:

    一种方法是下载sprintf for javascript 并编写如下内容:

    int i = 1;
    string s = sprintf("%02d", i);
    document.write(s); // Prints "01"
    

    【讨论】:

      【解决方案4】:
      var num =10
      document.write(num);
      

      但如果您的问题是两次使用两位数字,那么您可以使用这个

      var num1 = 10;
      var num2 = 20;
      var resultStr = string.concat(num1,num2);
      document.write(resultStr);
      ...
      Result: 1020
      

      如果你想要一个空格,

      var resultStr = string.concat(num1,"",num2);
      

      希望这会有所帮助...

      【讨论】:

      • 我认为 op 想要填充小于 10 的数字,因此 1 变为字符串 01 或 001
      • 这不会有帮助,因为它不能解决字符串格式的问题。 (例如,操作想要拥有类似 i=1 ==&gt; "01" 的东西)
      • 不,你不明白。您的回答与字符串填充无关
      • @codemonkey:在您发表第一条评论之前,我实际上正在修改代码,因此无法查看它,保存后,页面更新为您的评论。所以不是我不明白。我已经正确理解了。无论如何谢谢....
      • 你还是没看懂。您的回答仍然与 STRING PADDING 无关。 Op 正在寻找一种用零填充字符串以确保固定长度的方法。例如,1 变成“001”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多