format-value.js
2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
export function formatValueByGapRule(gapRule, value, gap = ' ', range, isAdd = 1) {
const arr = value ? value.split('') : []
let showValue = ''
const rule = []
gapRule.split('|').some((n, j) => {
rule[j] = +n + (rule[j - 1] ? +rule[j - 1] : 0)
})
let j = 0
arr.some((n, i) => {
// Remove the excess part
if (i > rule[rule.length - 1] - 1) {
return
}
if (i > 0 && i === rule[j]) {
showValue = showValue + gap + n
j++
} else {
showValue = showValue + '' + n
}
})
let adapt = 0
rule.some((n, j) => {
if (range === +n + 1 + j) {
adapt = 1 * isAdd
}
})
range = typeof range !== 'undefined' ? (range === 0 ? 0 : range + adapt) : showValue.length
return {value: showValue, range: range}
}
export function formatValueByGapStep(step, value, gap = ' ', direction = 'right', range, isAdd = 1, oldValue = '') {
if (value.length === 0) {
return {value, range}
}
const arr = value && value.split('')
let _range = range
let showValue = ''
if (direction === 'right') {
for (let j = arr.length - 1, k = 0; j >= 0; j--, k++) {
const m = arr[j]
showValue = k > 0 && k % step === 0 ? m + gap + showValue : m + '' + showValue
}
if (isAdd === 1) {
// 在添加的情况下,如果添加前字符串的长度减去新的字符串的长度为2,说明多了一个间隔符,需要调整range
if (oldValue.length - showValue.length === -2) {
_range = range + 1
}
} else {
// 在删除情况下,如果删除前字符串的长度减去新的字符串的长度为2,说明少了一个间隔符,需要调整range
if (oldValue.length - showValue.length === 2) {
_range = range - 1
}
// 删除到最开始,range 保持 0
if (_range <= 0) {
_range = 0
}
}
} else {
arr.some((n, i) => {
showValue = i > 0 && i % step === 0 ? showValue + gap + n : showValue + '' + n
})
const adapt = range % (step + 1) === 0 ? 1 * isAdd : 0
_range = typeof range !== 'undefined' ? (range === 0 ? 0 : range + adapt) : showValue.length
}
return {value: showValue, range: _range}
}
export function trimValue(value, gap = ' ') {
value = typeof value === 'undefined' ? '' : value
const reg = new RegExp(gap, 'g')
value = value.toString().replace(reg, '')
return value
}