Skip to content

Commit

Permalink
feat: 新增方法 padZero
Browse files Browse the repository at this point in the history
  • Loading branch information
蔡金锋 committed Mar 20, 2022
1 parent e17ff84 commit 699c726
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ export { default as setDataURLPrefix } from './setDataURLPrefix';
export { default as normalizeString } from './normalizeString';
export { default as safeDate } from './safeDate';
export { default as formatMobile } from './formatMobile';
export { default as padZero } from './padZero';

/**
* 数学计算,修正浮点数计算问题
Expand Down
39 changes: 39 additions & 0 deletions src/padZero.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import normalizeString from './normalizeString';

/**
* 前置补零
*
* @static
* @alias module:Processor.padZero
* @since 4.7.0
* @param {string|number} value 要处理的值
* @param {number} [size=2] 指定字符串长度
* @returns {string} 用零填充数字到给定长度的字符串
* @example
* padZero(5); // '05'
* padZero('5'); // '05'
*
* padZero(12); // '12'
* padZero('12'); // '12'
*
* padZero(688); // '688'
* padZero('688'); // '688'
*
* padZero(688, 5); // '00688'
* padZero('688', 5); // '00688'
*/
function padZero(value, size = 2) {
const str = normalizeString(value);
const len = str.length;

if (typeof size !== 'number' || size < 0) {
size = 0;
}

if (len < size) {
return '0'.repeat(size - len) + str;
}
return str;
}

export default padZero;
63 changes: 63 additions & 0 deletions test/processor/padZero.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import { padZero } from '../../src';

describe('padZero', () => {
it('should be defined', () => {
expect(padZero).toBeDefined();
});

it('correct', () => {
expect(padZero(0)).toBe('00');
expect(padZero(0.2)).toBe('0.2');
expect(padZero(1)).toBe('01');
expect(padZero(9)).toBe('09');
expect(padZero(10)).toBe('10');
expect(padZero(28)).toBe('28');
expect(padZero(688)).toBe('688');

expect(padZero(0, 3)).toBe('000');
expect(padZero(0.2, 3)).toBe('0.2');
expect(padZero(1, 3)).toBe('001');
expect(padZero(9, 3)).toBe('009');
expect(padZero(10, 3)).toBe('010');
expect(padZero(28, 3)).toBe('028');
expect(padZero(688, 3)).toBe('688');

expect(padZero(0, 5)).toBe('00000');
expect(padZero(0.2, 5)).toBe('000.2');
expect(padZero(1, 5)).toBe('00001');
expect(padZero(9, 5)).toBe('00009');
expect(padZero(10, 5)).toBe('00010');
expect(padZero(28, 5)).toBe('00028');
expect(padZero(688, 5)).toBe('00688');
});

it('incorrect', () => {
expect(padZero()).toBe('00');
expect(padZero(undefined)).toBe('00');
expect(padZero(void 0)).toBe('00');
expect(padZero(null)).toBe('00');

expect(padZero(undefined, 0)).toBe('');
expect(padZero(undefined, 5)).toBe('00000');
expect(padZero(null, 0)).toBe('');
expect(padZero(null, 5)).toBe('00000');

expect(padZero(undefined, '')).toBe('');
expect(padZero(undefined, '12')).toBe('');
expect(padZero(undefined, null)).toBe('');
expect(padZero(undefined)).toBe('00');

expect(padZero(false, '')).toBe('false');
expect(padZero(false, '12')).toBe('false');
expect(padZero(false, null)).toBe('false');
expect(padZero(false, void 0)).toBe('false');

expect(padZero(true, '')).toBe('true');
expect(padZero(true, '12')).toBe('true');
expect(padZero(true, null)).toBe('true');
expect(padZero(true, void 0)).toBe('true');

expect(padZero(true, 5)).toBe('0true');
expect(padZero(true, true)).toBe('true');
});
});

0 comments on commit 699c726

Please sign in to comment.