我有一个13位数字的值,如1231234123412
,我想用点将这个数字拆分为###.####.####.##
。如何在javascript中将字符串/数字格式化为自定义模式?
结果值必须看起来像123.1234.1234.12
我怎么能在4块分割值(###。####。####。##)使用JavaScript,angularjs甚至经常表达?
我有一个13位数字的值,如1231234123412
,我想用点将这个数字拆分为###.####.####.##
。如何在javascript中将字符串/数字格式化为自定义模式?
结果值必须看起来像123.1234.1234.12
我怎么能在4块分割值(###。####。####。##)使用JavaScript,angularjs甚至经常表达?
您可以从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" >
前瞻:
OP正在询问'3 4 3 2'数字位置,而不是简单的千位。 –
@DanielCheung当然,会纠正它。给我一点时间。 –
谢谢大家。正则表达式看起来很完美,但对于我的小问题来说相当复杂。我更喜欢substring()。 – user4500
function splitValue(value) {
return value.substring(0, 3) + "." + value.substring(3,7)+"."+value.substring(7, 11) + "." + value.substring(11,value.length);
}
alert(splitValue("1231234123412"));
您可以使用此功能。
你可以用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位数字的工作,所以如果这是你将永远有那么你应该怎样确定。
你可以用普通的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");
您可以使用正则表达式:
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 ..“
最简单优雅的格式是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)
}
这并不涉及到angularjs ...... -_- –
平原老'javascript'应该在'子工作的样子()'。 – brso05