如何从另一个字符串'subtract'一个字符串?



假设我有以下两个字符串:

var value = "1-000-111";
var mask = " -   -";

我想从value减去mask。换句话说,我想要这样的东西:

var output = subtract(value, mask);
// output should be 1000111

实施subtract()的最佳方法是什么?我已经写了这篇文章,但这对我来说似乎并不优雅。

function subtract(value, mask) {
    while (mask.indexOf('-') >= 0) {
        var idx = mask.indexOf('-');
        value = value.substr(0, idx) + value.substr(idx + 1);
        mask = mask.substr(0, idx) + mask.substr(idx + 1);
    }
    return value;
}

JavaScript是否有内置的东西可以实现这一目标?请注意,掩盖字符不仅限于-(dash(,但也可以是其他字符,例如+。但是在给定的情况下,掩蔽字符只能是-+,因此可以将其发送到subtract()函数,这使得处理不同的掩蔽字符琐碎。另外,掩盖字符将处于任意位置。

也欢迎任何语言反应的答案。

您可以将值分开并过滤与蒙版字符串相同位置的字符相等的字符。

然后加入新字符串的数组。

function subtract(value, mask) {
    return value.split('').filter(function (a, i) {
        return a !== mask[i];
    }).join('');
}
console.log(subtract("1-000-111", " -   -"));
console.log(subtract("foo1-000-111", "foo -   -"));

仅通过价值迭代并检查mask中的相应值是否不是-

    var value = '1-000-111';
    var mask  = ' -   -';
    
    var result = '';
    for (var i = 0; i < value.length; i += 1) {
        if (mask[i] !== '-') {
            result += value[i];
        }
    }
    
    console.log(result);

掩码可以是任何字符,如果您遍历每个值的每个字符,并将其比较到蒙版中的同一位置:

使用Array#yred((on split((value

上的示例

var value = "1-000-111";
var mask = " -   -";
var unmasked  = value.split('').reduce((a,c,i) => (mask[i] === c) ? a : a+c);
console.log(unmasked )

最新更新