![](/img/trans.png)
[英]Using Javascript to automatically adjust date to 2nd Saturday of every month?
[英]Add colon (:) after every 2nd character using Javascript
我有一個字符串,並希望在每個第二個字符后添加一個冒號(但不是在最后一個字符之后),例如:
12345678
變
12:34:56:78
我一直在使用.replace()
,例如:
mystring = mystring.replace(/(.{2})/g, NOT SURE WHAT GOES HERE)
但是沒有一個正則表達式:
我已經使用過工作,但我還沒有找到任何有用的東西。
誰能指出我正確的方向?
mystring = mystring.replace(/(..)/g, '$1:').slice(0,-1)
這是立刻想到的。 我只是剝掉了最后一個角色,最后擺脫了冒號。
如果你想將它用於奇數長度的字符串,你只需要使第二個字符可選。 像這樣:
mystring = mystring.replace(/(..?)/g, '$1:').slice(0,-1)
無需刪除任何尾隨冒號:
mystring = mystring.replace(/..\B/g, '$&:')
\\B
匹配零寬度非字邊界; 換句話說,當它到達字符串的末尾時,它將不匹配(因為它被認為是一個單詞邊界),因此不會執行替換(因此也沒有尾隨冒號)。
$&
包含匹配的子字符串(因此您不需要使用捕獲組)。
如果您正在尋找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
沒有正則表達式的一種不同的方法可能是使用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)
試試這個
簡單,只需匹配每組最多2個字符,並使用':'
加入數組
mystring.match(/.{1,2}/g).join(':')
var mystring = '12345678'; document.write(mystring.match(/.{1,2}/g).join(':'))
不需要字符串切片/修剪。
如果你調整你正在搜索的內容以避免行尾冒號(使用負前瞻正則表達式)會更容易
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'));
這是一個演示
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.