【问题标题】:How to separate digits in a string into four character blocks [duplicate]如何将字符串中的数字分成四个字符块[重复]
【发布时间】:2014-07-30 11:16:50
【问题描述】:

鉴于 ccnum 是一个仅包含数字(信用卡号)的 16 个字符的字符串,我想一次用 4 个数字很好地格式化字符串,用空格分隔。我试过这个:

ccnum=ccnum.substring(0, 4)+' '+
      ccnum.substring(4, 4)+' '+
      ccnum.substring(8, 4)+' '+
      ccnum.substring(12, 4);

但我得到了不可预知的结果,例如:

12341234 1234 1234
1234 1234 12341234

不知道为什么?

【问题讨论】:

  • 您的子字符串不是syntactically correct - 您已将其编码为substr
  • substring 函数拆分一个字符串并分配给同一个变量,查看我的答案了解更多信息

标签: javascript


【解决方案1】:

你可以使用 JavaScript 的 match() function 和一个简单的正则表达式来获得你需要的东西。

match() 方法在将字符串与正则表达式匹配时检索匹配项。

var str = "1234123412341324";
var results = str.match(/\d{4}/g);
var final_cc_str = results.join(" ");

正则表达式 /\d{4}/g 正在搜索数字字符 (\d)。其中四个({4})。它想要找到所有个匹配项,因此它使用g 标志进行全局搜索。

之后,我使用join() function 连接每个匹配的元素,并以空格字符作为分隔符。

join() 方法将数组的所有元素连接成一个字符串。

【讨论】:

    【解决方案2】:

    你有困惑

    substring

    substring() 方法返回一个索引和另一个索引之间的字符串子集,或者通过字符串的结尾。

    语法str.substring(indexA[, indexB])

    ccnum=ccnum.substring(0, 4)+' '+
          ccnum.substring(4, 8)+' '+
          ccnum.substring(8, 12)+' '+
          ccnum.substring(12, 16);
    

    substr

    substr() 方法返回字符串中从指定位置开始到指定字符数的字符。

    语法str.substr(start[, length])

    ccnum=ccnum.substr(0, 4)+' '+
          ccnum.substr(4, 4)+' '+
          ccnum.substr(8, 4)+' '+
          ccnum.substr(12, 4);
    

    【讨论】:

      【解决方案3】:

      使用substr 而不是substring

      试试这个

      var ccnum = '123456789123456';
      
      ccnum.substr(0, 4)+' '+ccnum.substr(4, 4)+' '+ccnum.substr(8, 4)+' '+ccnum.substr(12, 4);
      

      【讨论】:

        【解决方案4】:
        var ccnum = '1111222233334444';
        
        ccnum.match(/.{1,4}/g);
        

        结果

        ["1111", "2222", "3333", "4444"]
        

        【讨论】:

        • 假设这是用户提供的数据,我认为假设字符串只包含数字是不明智的......除非有其他一些没有提到的验证方法 OP .
        • 如果您知道要搜索数字,我会说最好明确定义要搜索的内容。
        • 因为信用卡号码是16位数字。
        • 是的,我正在做其他验证以确保 16 位数,然后再执行此步骤。
        【解决方案5】:

        试试这个。 JSFIDDLE

        "1111222233334444".match(/.{1,4}/g).join(" ");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-09-24
          • 2017-10-14
          • 1970-01-01
          • 2021-03-14
          • 2016-05-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多