上网查询了一下 没有简单的方法所以自己经过1个小时的努力写出来了 郁闷
function _format(pattern,num,z){
var j = pattern.length >= num.length ? pattern.length : num.length ;
var p = pattern.split("");
var n = num.split("");
var bool = true,nn = "";
for(var i=0;i<j;i++){
var x = n[n.length-j+i];
var y = p[p.length-j+i];
if( z == 0){
if(bool){
if( ( x && y && (x != "0" || y == "0")) || ( x && x != "0" && !y ) || ( y && y == "0" && !x ) ){
nn += x ? x : "0";
bool = false;
}
} else {
nn += x ? x : "0" ;
}
} else {
if( y && ( y == "0" || ( y == "#" && x ) ))
nn += x ? x : "0" ;
}
}
return nn;
}
function _formatNumber(numChar,pattern){
var patterns = pattern.split(".");
var numChars = numChar.split(".");
var z = patterns[0].indexOf(",") == -1 ? -1 : patterns[0].length - patterns[0].indexOf(",") ;
var num1 = _format(patterns[0].replace(","),numChars[0],0);
var num2 = _format( patterns[1]?patterns[1].split('').reverse().join(''):"", numChars[1]?numChars[1].split('').reverse().join(''):"",1);
num1 = num1.split("").reverse().join('');
var reCat = eval("/[0-9]{" + (z-1) + "," + (z-1) + "}/gi");
var arrdata = z > -1 ? num1.match(reCat) : undefined ;
if( arrdata && arrdata.length > 0 ){
var w = num1.replace(arrdata.join(''),'');
num1 = arrdata.join(',') + ( w == "" ? "" : "," ) + w ;
}
num1 = num1.split("").reverse().join("");
return (num1 == "" ? "0" : num1) + (num2 != "" ? "." + num2.split("").reverse().join('') : "" );
}
function formatNumber(num,opt){
var reCat = /[0#,.]{1,}/gi;
var zeroExc = opt.zeroExc == undefined ? true : opt.zeroExc ;
var pattern = opt.pattern.match(reCat)[0];
var numChar = num.toString();
return !(zeroExc && numChar == 0) ? opt.pattern.replace(pattern,_formatNumber(numChar,pattern)) : opt.pattern.replace(pattern,"0");
}
下边是测试
var n = 1234567890000;
var p = "######.00";
var x = formatNumber(n,{pattern:p});
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n");
var n = 1234567890000.01;
var p = "#";
var x = formatNumber(n,{pattern:p});
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n");
n = 1234567890000;
p = "######.##";
x = formatNumber(n,{pattern:p});
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n");
var n = 1234567890000.00;
p = "######.##";
x = formatNumber(n,{pattern:p})
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n");
var n = 1234567890000.00;
p = "######.00";
x = formatNumber(n,{pattern:p})
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n");
var n = 1234567890000.01;
p = "######.00";
x = formatNumber(n,{pattern:p})
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n");
var n = 1234567890000.01;
p = "######.##";
x = formatNumber(n,{pattern:p})
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n");
var n = 1234567890000.00;
p = "###,###.##";
x = formatNumber(n,{pattern:p})
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n");
var n = 1234567890000.01;
p = "###,###.##";
x = formatNumber(n,{pattern:p})
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n");
var n = 1234567890000.00;
p = "##,####.##";
x = formatNumber(n,{pattern:p})
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n");
var n = 1234567890000.01;
p = "$###,###.##";
x = formatNumber(n,{pattern:p})
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n");
var n = 1234567890000.01;
p = "###,###.##元";
x = formatNumber(n,{pattern:p})
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n");
var n = 0.01123123;
p = "$###,###.##";
x = formatNumber(n,{pattern:p})
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n");
var n = 0.3123213;
p = "$###,###.00";
x = formatNumber(n,{pattern:p})
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n");
var n = 0;
p = "###,###.00元";
x = formatNumber(n,{pattern:p})
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n");
var n = 0;
p = "###,###.00元";
x = formatNumber(n,{pattern:p,zeroExc:false})
alert("n = " + n + "\n" + "p = " + p + "\n" + "x = " + x + "\n" + "zeroExc = " + false + "\n");
分享到:
相关推荐
数据格式化 用法 format string(format) *(value) [object(options)|string(type)|function(audit)] options audit {Function} called in three phases (see below) type {String} will cast the passed object,...
没有外部库的快速数字格式化程序 用法 const { formatFromPattern , formatFromConfig , parsePattern , } = require ( "number-formatter-js" ) ; formatFromPattern ( 1000000 , "$0,000.00" ) ; // "$1,000,...
React编号格式React组件以将数字格式化为输入形式或文本形式特征前缀,后缀和千位分隔符。 自定义格式模式。 掩蔽。 自定义格式处理程序。 输入中的数字格式或简单文本格式。安装 通过npm npm install react-number-...
fmt:——对数字对行格式化 在js中———- Javascript也提供了对数字进行格式化输出的支持 Number对象提供的几种格式化函数: toExponential([fractionDigits]) :将数字按科学计数法格式返回,其中的fractionDigits...
format-number文本框数字或金额格式化效果如下图:Demo请点击演示代码[removed][removed][removed][removed]整数:<input type="text" data-type="int" data-name="int"/>[removed]var n1 = new FormatNumber()...
格式化 将toFormat实例方法添加到或 。 安装 节点.js $ npm install toformat 浏览器 < script src =' path/to/big.js ' > </ script > < script src =' path/to/toFormat.js ' > </ script...
代码如下:[removed]var format = function (number, form) { var forms = form.split(‘.’), number = ” + number, numbers = number.split(‘.’) , leftnumber = numbers[0].split(”) , exec = function ...
格式前缀 格式化和取消格式化带有SI前缀的数字。原料药formatSI() import { formatSI } from 'format-si-prefix' ;const string = formatSI ( number ) ; 在出去... ... 0.000111111 111µ 0.00111 1.11百万0.0111 ...
numerable是一个用于 Javascript 和 Typescript 应用程序的数字格式库。 :gear: 安装 使用或安装numerable 。... :input_numbers: 格式化数字 numerable 中的数字格式是通过基于模式的语法完成的。 使用这些模式,您可
一个简单轻巧的电话格式化实用程序,可以处理大多数(美国)格式,基本分机号和长途电话号码。 如何 标准模块系统 import { uglify , dashed , dotted , normalize , longDistance , extensionNumber } from 'phone-...
本文实例讲述了javascript格式化json显示方法。分享给大家供大家参考。具体分析如下: 将json对象或者json字符串格式化方便在网页上限制 var formatJson = function(json, options) { var reg = null, formatted ...
格式化CPF号。 例子 CPF . format ( '11144477735' ) ; //=> '111.444.777-35' 参数 cpf {字符串} CPF号。 返回带有格式化的CPF号的字符串。 CPF.generate(formatted, invalid) 生成一个随机的CPF编号。 参数 ...
电话号码格式化程序(Node.js模块) 描述 这个Node.JS模块是从php库( )移植而来的,它以清晰易读的字符串格式设置电话号码,具体取决于国家/地区代码和电话号码的长度。 安装 $ npm install phormatter 使用 模块...
## 0 / m','((33 years)','$ -99.00'重新格式化数字。 检查该数字是否为有效数字。 根据格式字符串检查长度以及是否允许使用负值,使用零/舍入填充并添加前缀和后缀字符格式字符串可以包括: 前缀文本之前或...
geld是最小的货币格式化程序。 安装 使用 : npm install geld --save 使用: yarn add geld 用法 const geld = require ( 'geld' ) ; const price1 = geld ( 42.23 ) ; console . log ( price1 ) ; // => '42,23...
Unitex 是一个单位和数字格式化程序,它对单位格式化操作有广泛的覆盖。 用法 var unit = require ( 'unitex' ) ; unit . format ( 1234 ) ; // '1.234k' unit . format ( 1024 , { unit : 'B' , base : 1024 , ...
电话号码输入栏电话号码输入字段是具有以下功能的表单字段: 增量格式每次击键时,电话号码都会逐渐格式化。 这些数字按照原产国的标准方式分组和隔开。 电话号码验证每次击键都会验证输入的数字,以确定它是否是...
字节格式化程序 来自 Glize 库的字节格式化模块。 用法 npm install bytes-formatter --save import { formatBytes } from 'bytes-formatter' ; /** * Formats given <code>bytes</code> to human friendly ...
该组件使用进行电话号码解析和格式化。使用该组件有两个变体:“有国家选择”和“无国家选择”。与国家选择“使用国家/地区选择”组件需要两个属性: value和onChange(value) 。 。 import 'react-phone-number-...
示例用法您可以在渲染事件期间初始化输入的格式。 Template.profileEdit.hooks({ rendered: function () { // Format Card Number $('#creditCardNumber').payment('formatCardNumber'); $('#creditCardCVV')....