all files / vtree/ clearString.js

100% Statements 31/31
100% Branches 8/8
100% Functions 4/4
100% Lines 31/31
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          525× 525× 525×   522× 522×   334× 334× 261×   334×     334× 334× 334× 13152× 13152× 10338× 78× 78× 10260× 183× 183×     2814× 261× 261×       334×    
/* 
 * 将要检测的字符串的字符串替换成??123这样的格式
 */
export var stringNum = 0
export var stringPool = {
    map: {}
}
export var rfill = /\?\?\d+/g
export function dig(a) {
    var key = '??' + stringNum++
    stringPool.map[key] = a
    return key + ' '
}
export function fill(a) {
    var val = stringPool.map[a]
    return val
}
export function clearString(str) {
    var array = readString(str)
    for (var i = 0, n = array.length; i < n; i++) {
        str = str.replace(array[i], dig)
    }
    return str
}
 
function readString(str) {
    var end, s = 0
    var ret = []
    for (var i = 0, n = str.length; i < n; i++) {
        var c = str.charAt(i)
        if (!end) {
            if (c === "'") {
                end = "'"
                s = i
            } else if (c === '"') {
                end = '"'
                s = i
            }
        } else {
            if (c === end) {
                ret.push(str.slice(s, i + 1))
                end = false
            }
        }
    }
    return ret
}