2015-08-28 72 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) 
} 
相关问题