【问题标题】:incrementing a string. (JS or PHP)增加一个字符串。 (JS 或 PHP)
【发布时间】:2016-10-28 14:04:35
【问题描述】:

我想知道是否可以在 javascript 或 php 或其他任何东西中执行此操作。

我想创建一个以 001000 开头的发票编号,现在要获得下一个发票编号,我需要通过添加 1 来增加它,但是当我尝试在 php 中执行此操作时。它只是将其转换为一个数字,这不好,因为我需要 00 前缀。在javascript中。它只是将1 添加到末尾。

我知道可以使用正则表达式来完成,但我不知道如何。

编辑:这是我想要实现的发票顺序。

  • 001000
  • 001001
  • 001002

当它到达009999 时,它应该是010000

请帮忙。

已解决: 正如斯宾塞所说,我使用了 str_pad 。 php $last_invoice = Quote::all()->last()->invoice + 1; // to convert it to number. str_pad( ($last_invoice, 6, '0', STR_PAD_LEFT); // fill 0 prefix.

【问题讨论】:

  • 您能否分享您期望的发票编号序列以及递增每个编号的逻辑?
  • 为什么不增加一个普通的int,然后用字符串填充呢?
  • sprintf('%02d', $value);str_pad($value, 2, '0', STR_PAD_LEFT); 其中$value 包含要增加的整数,不带前导零。这些将在它之后采取。您可以使用 if($value > 9999){ sprintf('%01d', $value); } 等 if 语句来获取更大的数字。
  • @SpencerMay 我还没有检查文档。但我会试一试。谢谢!
  • @SpencerMay,你能把你的评论变成答案吗?所以我可以将其标记为答案。好在我搜索 str_pad。 :D

标签: javascript php regex


【解决方案1】:

您可以将发票编号存储为实际编号,而不是字符串,以便轻松递增。当您打印要显示的数字时,请使用前导零传递它。

【讨论】:

    【解决方案2】:

    你可以使用这个逻辑

    var currentNumber = "000100";
    var nextNumber = "00" + String( Number( currentNumber ) + 1 ).slice( 0 , 6 );
    console.log(nextNumber);

    将其转化为函数

    function nextInSequence( currentNumber )
    {
      return "00" + String( Number( currentNumber ) + 1 ).slice( 0 , 6 );
    }
    var currentNumber = "000100";
    currentNumber = nextInSequence( currentNumber );
    console.log( currentNumber )
    currentNumber = nextInSequence( currentNumber );
    console.log( currentNumber )
    currentNumber = nextInSequence( currentNumber );
    console.log( currentNumber )

    【讨论】:

    • @Hitori Javascript 实际上并没有用于字符串填充的本机函数。这个答案是在 JS 中实现这一点的正确方法。 str_pad 将是您在 PHP 中的“goto”
    • @SpencerMay 是的。我用 PHP
    • 如果有 5 个非零数字怎么办?我认为 OP 在这种情况下只想要一个前导零。
    【解决方案3】:

    正如@spencermay 所说,我使用了str_pad。 php $last_invoice = Quote::all()->last()->invoice + 1; // 将其转换为数字。 str_pad( ($last_invoice, 6, '0', STR_PAD_LEFT); // 填充 0 前缀。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 2013-01-24
      • 1970-01-01
      • 2021-06-24
      • 2021-02-14
      • 1970-01-01
      相关资源
      最近更新 更多