mand-mobile/components/_util/formate-value.js

77 lines
2.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}