priceSubstr.js 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. /**
  2. * @desc 千位分割方法
  3. * @param {String,Number} num
  4. * @param {Number} n
  5. * @param {String} symbol
  6. * @return {String}
  7. */
  8. // (123456789.11).toLocaleString('en-US') ie11+ 兼容性不好
  9. // /(\d)(?=(\d{3})+\.)/g;
  10. // 这里最难理解的就是(?=(\d{3})+\.),且看语法:
  11. // x(?=y):正向肯定查找,匹配后面带有y的x项目
  12. // 查找一个和“.”之间带有一个或多个连续3位数字的数字(x)
  13. // symbol 不建议为'.'
  14. var priceSubstr = function priceSubstr() {
  15. var num = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '0';
  16. var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
  17. var symbol = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ',';
  18. if (parseInt(num) != num && n !== 0) {
  19. if (symbol === '.') throw new Error('symbol can not same as .');
  20. }
  21. num = (+num).toFixed(n === 0 ? 1 : n);
  22. num = num.toString().replace(/(\d)(?=(\d{3})+\.)/g, '$1' + symbol);
  23. if (!!n) {
  24. return num;
  25. } else {
  26. return num.substring(0, num.lastIndexOf('.'));
  27. }
  28. };
  29. module.exports = priceSubstr;