refactor(utils): enhanced number formatter (#7921)

This commit is contained in:
John 2021-01-16 19:08:52 +08:00 committed by GitHub
parent d28e535d03
commit 087ac07a14
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 1 deletions

View File

@ -4,6 +4,7 @@ export function range(num: number, min: number, max: number): number {
function trimExtraChar(value: string, char: string, regExp: RegExp) { function trimExtraChar(value: string, char: string, regExp: RegExp) {
const index = value.indexOf(char); const index = value.indexOf(char);
let prefix = '';
if (index === -1) { if (index === -1) {
return value; return value;
@ -13,7 +14,13 @@ function trimExtraChar(value: string, char: string, regExp: RegExp) {
return value.slice(0, index); return value.slice(0, index);
} }
return value.slice(0, index + 1) + value.slice(index).replace(regExp, ''); if (char === '.' && value.match(/^(\.|-\.)/)) {
prefix = index ? '-0' : '0';
}
return (
prefix + value.slice(0, index + 1) + value.slice(index).replace(regExp, '')
);
} }
export function formatNumber( export function formatNumber(

View File

@ -116,6 +116,10 @@ test('formatNumber', () => {
expect(formatNumber('-1.2', true)).toEqual('-1.2'); expect(formatNumber('-1.2', true)).toEqual('-1.2');
expect(formatNumber('-1.2-', true)).toEqual('-1.2'); expect(formatNumber('-1.2-', true)).toEqual('-1.2');
expect(formatNumber('123-')).toEqual('123'); expect(formatNumber('123-')).toEqual('123');
// special cases
expect(formatNumber('.1', true)).toEqual('0.1');
expect(formatNumber('-.1')).toEqual('-0.1');
}); });
test('addUnit', () => { test('addUnit', () => {