我正在尝试在两个数字之间添加一个点。这与商品编号有关,目前它们就像XXXXX或XXXXXX,现在应该是XXX.XX或XXX.XXX,我不知道。
商品编号很多,因此会自动从数据库中加载。现在是99-87503或99-400031,从现在开始应该是99.875.03或99.400.031。
我尝试指定数字,过滤器和模式,但都不起作用。
当前AngularJs代码:
<div class="status">
99.{{Manipulated()}} |
<p ng-model="Manipulated"
class="rwd-info-msg {{Manipulated.cssClass}}">
{{Manipulated.text}}
</p>
</div>
此99.只是每个商品编号的前缀。
我对AngularJS来说还很陌生,因此可以提供任何帮助。
答案 0 :(得分:3)
您可以做的天真
var num = 9876543;
var res = num.toString().replace(/^(\d{3})(.*)/ig, '$1.$2');
console.log(num, '->', res);
在这里,(\d{3})
部分捕获前3位数字,而(.*)
部分捕获其余3位数字。
然后,您可以使用$1
访问每个部分以获取第一个捕获的组,并使用$2
访问第二个捕获的组。
我确信有更好的解决方案,但这是一个起点。
答案 1 :(得分:2)
此表达式
(?<=^[0-9]{3})
用.
替换也可以。
const regex = /(?<=^[0-9]{3})/g;
const str = `9876544`;
const subst = `.`;
const result = str.replace(regex, subst);
console.log(result);
该表达式在regex101.com的右上角进行了解释,如果您想探索/简化/修改它,在this link中,您可以观察到它如何与某些示例输入匹配,如果你喜欢。
答案 2 :(得分:1)
AngularJS的实现方式是创建自定义filter
:
app.filter('addDot', function() {
return function(number) {
return number.toString().slice(0,3) + number.toString().slice(3);
};
})
并在您的模板中使用它,例如:
<div class="article-status">
99.{{getManipulatedArticle(article).artnr | addDot}} </p>
</div>