Javascript复制已被屏蔽的变量模式

时间:2015-12-25 12:57:21

标签: javascript

我想通过javascript将变量模式复制到其他变量,以便同时处理掩码和业务rqmnt

例如,

如果a = 89,734且b = 98780 那么b也应该像 - 98,780

注意 - ','只是一个示例掩码,也可以是小数 - '。' 如果是字符串,则为大写/小写。

任何人都可以帮助我 感谢

1 个答案:

答案 0 :(得分:0)

试一试:

pattern
|   given
|   |    result
|   |    |
9 + 9 -> keep
* + 9 -> insert *
a + a -> keep
a + A -> a (lower)
A + a -> A (upper)

function build(a, b) {
    function isN(s) { return (typeof s !== 'undefined') && ~s.search(/\d/); }
    function isL(s) { return s === s.toLowerCase(); }

    var i, l;
    for (i = 0, l = a.length; i < l; i++) {
        if (!isN(a[i]) && isN(b[i])) {
            b = b.slice(0, i) + a[i] + b.slice(i);
            continue;
        }
        if (a[i].toLowerCase() !== a[i].toUpperCase()) {
            if (isL(a[i]) && !isL(b[i]) || !isL(a[i]) && isL(b[i])) {
                b = b.slice(0, i) + b[i][isL(a[i]) ? 'toLowerCase' : 'toUpperCase']() + b.slice(i + 1);
                continue;
            }
        }
    }
    return b;
}

function go(a, b) {
    document.write('<pre>pattern: ' + a + '\ngiven:   ' + b + '\nresult:  ' + build(a, b) + '</pre>');
}

go('89,734', '98780');
go('aBcDeF', 'zyxwvu');
go('aBcDeF', 'GHIJKL');
go('12*456', 'abcdef');
go('12*456', '98765');
go('124.000,56 Euro', '25287674 euro');