鉴于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
不确定原因?
答案 0 :(得分:3)
您可以使用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()方法将数组的所有元素连接成一个字符串。
答案 1 :(得分:2)
你困惑了
substring()方法返回一个索引与另一个索引之间或字符串末尾的字符串子集。
语法
str.substring(indexA[, indexB])
ccnum=ccnum.substring(0, 4)+' '+
ccnum.substring(4, 8)+' '+
ccnum.substring(8, 12)+' '+
ccnum.substring(12, 16);
substr()方法通过指定的字符数返回从指定位置开始的字符串中的字符。
语法
str.substr(start[, length])
ccnum=ccnum.substr(0, 4)+' '+
ccnum.substr(4, 4)+' '+
ccnum.substr(8, 4)+' '+
ccnum.substr(12, 4);
答案 2 :(得分:1)
使用substr
代替substring
试试这个
var ccnum = '123456789123456';
ccnum.substr(0, 4)+' '+ccnum.substr(4, 4)+' '+ccnum.substr(8, 4)+' '+ccnum.substr(12, 4);
答案 3 :(得分:0)
var ccnum = '1111222233334444';
ccnum.match(/.{1,4}/g);
结果
["1111", "2222", "3333", "4444"]
答案 4 :(得分:0)
试试这个。 JSFIDDLE
"1111222233334444".match(/.{1,4}/g).join(" ");