【问题标题】:using string format for a credit card number对信用卡号使用字符串格式
【发布时间】:2011-03-28 15:05:37
【问题描述】:

我正在尝试将信用卡号显示为字符串,例如 #### #### #### ####

我试过了:

txtbox.Text = string.Format("{0:#### #### #### ####}", ccNumber);

它没有工作。有什么想法吗?

【问题讨论】:

  • “没用”不是错误描述。结果是什么,你期待什么?
  • 并非所有信用卡号码都是 16 位数字,因此请注意,有些可能低至 12 位,有些则高达 20 位。
  • 我希望字符串在四位数之后有一个空格 - 1234 5678 9123 4567 - 它看起来像 1234567891234567。
  • 传递的抄送号码已经是字符串格式 - 所以格式化不起作用。 String.Format("{0:0000 0000 0000 0000}", long.Parse(ccNumber)) 按预期工作;
  • John Batdorf 在这里是正确的 - 几家卡运营商的 16 位数字或多或少都超过“标准”。例如,美国运通有 15 位数字,以 0000 000000 00000 的格式排列。其他国际卡如 Maestro 可以有少至 12 位,多至 19 位。执行显示时,您可能需要考虑卡载体。见:en.wikipedia.org/wiki/Bank_card_number

标签: c# asp.net string formatting


【解决方案1】:
String.Format("{0:0000 0000 0000 0000}", number)

编辑

我在此处粘贴我的评论以使其可读:

ccNumber 是一个 Int 还是一个字符串? 如果它是一个 int 它应该工作。如果它是一个字符串,你需要做一个

String.Format("{0:0000 0000 0000 0000}", (Int64.Parse("1234567812345678")))

【讨论】:

  • 我希望字符串在四位数之后有一个空格 - 1234 5678 9123 4567 - 它看起来像 1234567891234567。
  • ccNumber 是 Int 还是字符串?如果它是一个 int 它应该可以工作,如果它是一个字符串你需要做一个 String.Format("{0:0000 0000 0000 0000}", (Int64.Parse("1234567812345678")))
  • 确保数字不是字符串格式!一旦我转换为 long,它就会按预期工作。
  • 使用这个的主要问题是所有前导和尾随 0 都将被销毁。
  • @Chris Marisic String.Format 仅在您使用#### 而不是 0000 进行格式化时削减前导零和尾随零。
【解决方案2】:

你最好是一个蒙版的文本框,并将蒙版设置为:

 this.maskedTextBox1.Mask = "0000 0000 0000 0000";

或将字符串格式设置为:

 long number = 1234123412341234;
 textBox1.Text = String.Format("{0:0000 0000 0000 0000}", number);

【讨论】:

    【解决方案3】:
    ccNumber.ToString("#### #### #### ####")
    

    【讨论】:

      【解决方案4】:

      ccNumber 可以是字符串

      Regex.Replace(ccNumber, @"(\w{4})(\w{4})(\w{4})(\w{4})", @"$1 $2 $3 $4");
      

      【讨论】:

        猜你喜欢
        • 2016-08-18
        • 1970-01-01
        • 1970-01-01
        • 2010-12-26
        • 2012-06-28
        • 1970-01-01
        • 2023-04-10
        • 2015-04-05
        • 2011-09-10
        相关资源
        最近更新 更多