gpt4 book ai didi

javascript - Angular 2 根据数字长度在数字之间放置空格

转载 作者:行者123 更新时间:2023-12-01 01:23:27 24 4
gpt4 key购买 nike

我想在数字之间添加空格 - 例如 600000 -> 600 000。

我做了什么:

HTML:

  <h2>{{price.spaces(item.price)}}€</h2>

TS:

 spaces(price){
let p = new String(price);
if(p.length == 4){
p.split("", 4);
p = p[0] + ' ' + p[1] + p[2] + p[3];

}

if(p.length == 5){
p.split("", 5);
p = p[0] + p[1] + ' ' + p[2] + p[3] + p[4];
}

if(p.length == 6){
p.split("", 6);
p = p[0] + p[1] + p[2] + ' ' + p[3] + p[4] + p[5];
}

//if(p.length == 7){
//p.split("", 7);
//p = p[0] + ' ' + p[1] + p[2] + p[3] + ' ' + p[4] + p[5] + p[6];
//}
return p;
}

预期行为:

  1. 如果长度为 4 - 1 000
  2. 如果长度为 5 - 10 000
  3. 如果长度为 6 - 100 000
  4. 如果长度为 7 - 1 000 000

我的函数结果:

很重要length通常 - 例如如果 600000 (6 length ) ,它会 if(p.length == 6)部分,之后就是 if(p.length == 7) ,因为之前在 if(p.length == 6)它变成了带有空格的7

如何让我的功能变得更好?

最佳答案

一种选择是使用正则表达式:标识字符串中的每个位置,以便 3 位数字、或 6 位数字、或 9 位数字等后面跟有字符串的末尾:

const spaces = price => String(price)
.replace(
/(?!^)(?=(?:\d{3})+$)/g,
' '
);

for (let i = 1; i < 1e10; i *= 10) {
console.log(spaces(i));
}

(?!^)(?=(?:\d{3})+$) 表示:

  • (?!^) - ^ 的负向前视 - 确保该位置不是字符串的开头
  • (?=(?:\d{3})+$) - 正向预测:
    • (?:\d{3})+ - 数字字符重复 3 次
    • $ - 后跟字符串结尾

关于javascript - Angular 2 根据数字长度在数字之间放置空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54036707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com