2015-08-28 68 views
0

我有一個13位數字的值,如1231234123412,我想用點將這個數字拆分爲###.####.####.##如何在javascript中將字符串/數字格式化爲自定義模式?

結果值必須看起來像123.1234.1234.12

我怎麼能在4塊分割值(###。####。####。##)使用JavaScript,angularjs甚至經常表達?

+1

這並不涉及到angularjs ...... -_- –

+2

平原老'javascript'應該在'子工作的樣子()'。 – brso05

回答

6

您可以從RegEx開始。您需要查找並替換原始值的內容並將其替換爲您喜歡的值。

您可能需要一個這樣的腳本:

function addCommas(nStr) 
{ 
    return nStr.substring(0,3) + "." + nStr.substring(3, 7) + "." + nStr.substring(7, 11) + "." + nStr.substring(11, 13); 
} 

片段

function addCommas(nStr) { 
 
    return nStr.substring(0,3) + "." + nStr.substring(3, 7) + "." + nStr.substring(7, 11) + "." + nStr.substring(11, 13); 
 
} 
 
$("#new_number").change(function(){ 
 
    this.value = addCommas(this.value.replace(',', '')); 
 
}); 
 

 
$('#Enter_Number').keyup(function(){ 
 
    $('#new_number').val($('#Enter_Number').val()).trigger("change"); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
Enter Number: <input type="text" id="Enter_Number" maxlength="13" /><br><br> 
 
Format result : <input type="text" id="new_number" >

前瞻:

+2

OP正在詢問'3 4 3 2'數字位置,而不是簡單的千位。 –

+1

@DanielCheung當然,會糾正它。給我一點時間。 –

+1

謝謝大家。正則表達式看起來很完美,但對於我的小問題來說相當複雜。我更喜歡substring()。 – user4500

3
function splitValue(value) { 
    return value.substring(0, 3) + "." +  value.substring(3,7)+"."+value.substring(7, 11) + "." + value.substring(11,value.length); 
} 

alert(splitValue("1231234123412")); 

您可以使用此功能。

2

你可以用substring()像這樣做:

var temp = "1231234123412"; 
 
temp = temp.substring(0,3) + "." + temp.substring(3, 7) + "." + temp.substring(7, 11) + "." + temp.substring(11, 13); 
 
window.alert(temp);

這將僅適用於13位數字的工作,所以如果這是你將永遠有那麼你應該怎樣確定。

0

你可以用普通的JavaScript來做到這一點。定義一個方法,你可以用任何你需要的長度和模式來格式化任何字符串。第一個參數是帶有佔位符的字符串。 0-12是佔位符,必須放置在{}之內。第二個參數是一個包含要使用的值的字符串。

看看下面的方法:

function formatWithPlaceholder(text, values){ 
    values = values.toString(); 
    var pattern = /\{\{|\}\}|{(\d+)}/g; 
    var formattedString = text.replace(pattern, function(match, group){ 
     var value; 
     if(match === "{{"){ 
      return "{"; 
     } 
     if(match === "}}"){ 
     return "}"; 
     } 
     value = values[parseInt(group, 10)]; 
     return value ? value.toString() : ""; 
    }); 
    return (values.length > 0) ? formattedString : ""; 
} 
var resultString = formatWithPlaceholder("{0}{1}{2}.{3}{4}{5}{6}.{7}{8}{9}{10}.{11}{12}","1231234123412"); 

這裏是小提琴:https://jsfiddle.net/d2f2z937/

1

您可以使用正則表達式:

var number = "1231234123412"; 
var temp = (number.substring(0,3) + "." + number.substring(3, 7) + "." + number.substring(7, 11) + "." + number.substring(11, 13)).replace('..', ''); 
console.log(temp); 

因爲如果數量= 「1231234」,你會得到「 123.1234「,而不是」123.1234 ..「

1

最簡單優雅的格式是usi NG正則表達式:

function fmt3442(str){ 
    var src = /^(\d{3})(\d{4})(\d{4})(\d{2})$/ 
    var dst = '$1.$2.$3.$4' 
    return str.replace(src, dst) 
} 
相關問題