使用Javascript在每2个字符后添加冒号(:)

Add colon (:) after every 2nd character using Javascript

本文关键字:添加 Javascript 在每 2个 字符 使用      更新时间:2023-09-26

我有一个字符串,希望在每2个字符后添加一个冒号(但不在最后一个字符集之后),例如:

12345678

成为

下午12:34:56:78

我一直在使用.replace(),例如:

mystring = mystring.replace(/(.{2})/g, NOT SURE WHAT GOES HERE)

但我使用过的:的正则表达式都不起作用,也没能在谷歌上找到任何有用的东西。

有人能给我指正确的方向吗?

无需删除任何尾随冒号:

mystring = mystring.replace(/..'B/g, '$&:')

CCD_ 3匹配零宽度的非字边界;换句话说,当它到达字符串的末尾时,它将不匹配(因为这被认为是单词边界),因此不会执行替换(因此也没有尾随冒号)。

$&包含匹配的子字符串(因此不需要使用捕获组)。

mystring = mystring.replace(/(..)/g, '$1:').slice(0,-1)

这就是我立刻想到的。我只是去掉最后一个字符,去掉结尾的冒号。

如果您想将其用于奇数长度的字符串,只需将第二个字符设置为可选字符即可。像这样:

mystring = mystring.replace(/(..?)/g, '$1:').slice(0,-1)

如果您正在寻找RegEx以外的方法,请尝试以下方法:

var str = '12345678';
var output = '';
for(var i = 0; i < str.length; i++) {
  output += str.charAt(i);
  if(i % 2 == 1 && i > 0) {
    output += ':';
  }
}
alert(output.substring(0, output.length - 1));

工作JSFiddle

简单,只需匹配每组最多2个字符,并使用':' 加入阵列

mystring.match(/.{1,2}/g).join(':')

var mystring = '12345678';
document.write(mystring.match(/.{1,2}/g).join(':'))

不需要字符串切片/修剪。

如果没有正则表达式,则可以使用Array.prototype.reduce:

Array.prototype.reduce.call('12345678', function(acc, item, index){
    return acc += index && index % 2 === 0 ? ':' + item : item;
}, ''); //12:34:56:78
mystring = mytring.replace(/(.{2})/g, '':$1').slice(1)

试试这个

如果您调整搜索内容以避免行尾冒号(使用负前瞻正则表达式),则会更容易

mystring = mystring.replace(/(.{2})(?!$)/g, ''$1:');
mystring = mystring.replace(/(.{2})/g, '$1':')

试试

我最喜欢我的方法:)

function colonizer(strIn){
  var rebuiltString = '';
  strIn.split('').forEach(function(ltr, i){
    (i % 2) ? rebuiltString += ltr + ':' : rebuiltString += ltr;
  });
  return rebuiltString;
}
alert(colonizer('Nicholas Abrams'));

这是一个演示

http://codepen.io/anon/pen/BjjNJj