千位分隔符的ts实现

445 阅读1分钟

开发中有时我们要将数字10000000转换成10,000,000的格式显示,这时我们可以用下面的代码来实现

let DIGIT_PATTERN = /(^|\s)\d+(?=\.?\d*($|\s))/g
let MILI_PATTERN = /(?=(?!\b)(\d{3})+\.?\b)/g
return  num.toString().replace(DIGIT_PATTERN, (m) => m.replace(MILI_PATTERN, ','))

写成函数如下:

function splitThousandSeparator(num:number):string{
	let prefix:string="";
	if(num<0){
		num *= -1;
		prefix = "-";
	}
	let DIGIT_PATTERN = /(^|\s)\d+(?=\.?\d*($|\s))/g;
	let MILI_PATTERN = /(?=(?!\b)(\d{3})+\.?\b)/g;
	let str:string = num.toString().replace(DIGIT_PATTERN, (m) => m.replace(MILI_PATTERN, ','));
	return prefix+str;
}