如何 'subtract' 一个字符串从另一个?
How to 'subtract' one string from another?
假设我有以下两个字符串:
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 有内置的东西来完成这个吗?请注意,屏蔽字符不限于 -
(破折号),还可以是其他字符,如 +
。但在给定的情况下,掩码字符只能是 -
或 +
,因此可以将其发送到 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);
如果您遍历值的每个字符并与掩码中的相同位置进行比较,则掩码可以是任何字符:
在 split() 值上使用 Array#reduce() 的示例
var value = "1-000-111";
var mask = " - -";
var unmasked = value.split('').reduce((a,c,i) => (mask[i] === c) ? a : a+c);
console.log(unmasked )
假设我有以下两个字符串:
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 有内置的东西来完成这个吗?请注意,屏蔽字符不限于 -
(破折号),还可以是其他字符,如 +
。但在给定的情况下,掩码字符只能是 -
或 +
,因此可以将其发送到 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);
如果您遍历值的每个字符并与掩码中的相同位置进行比较,则掩码可以是任何字符:
在 split() 值上使用 Array#reduce() 的示例
var value = "1-000-111";
var mask = " - -";
var unmasked = value.split('').reduce((a,c,i) => (mask[i] === c) ? a : a+c);
console.log(unmasked )