I'm trying to return a ma separated string without the items that end in 'non'.
Source:
id = '2345,45678,3333non,489,2333non';
Expected Result:
id = '2345,45678,489';
I'm using code that I found here: remove value from ma separated values string
var removeValue = function(list, value, separator) {
separator = separator || ",";
var values = list.split(separator);
for (var i = 0; i < values.length; i++) {
if (values[i] == value) {
values.splice(i, 1);
return values.join(separator);
}
}
return list;
}
Is there a way to make the line (values[i] == value)
use a wildcard?
I'm trying to return a ma separated string without the items that end in 'non'.
Source:
id = '2345,45678,3333non,489,2333non';
Expected Result:
id = '2345,45678,489';
I'm using code that I found here: remove value from ma separated values string
var removeValue = function(list, value, separator) {
separator = separator || ",";
var values = list.split(separator);
for (var i = 0; i < values.length; i++) {
if (values[i] == value) {
values.splice(i, 1);
return values.join(separator);
}
}
return list;
}
Is there a way to make the line (values[i] == value)
use a wildcard?
3 Answers
Reset to default 7Use /[^,]*non,|,[^,]*non/g
:
id = '2345,45678,3333non,489,2333non';
console.log(
id.replace(/[^,]*non,|,[^,]*non/g, '')
)
As a function:
id = '2345,45678,3333non,489,2333non';
removeItem = function(s, ends) {
pat = new RegExp(`[^,]*${ends},|,[^,]*${ends}`, 'g')
return s.replace(pat, '')
}
console.log(removeItem(id, 'non'))
You can also get that result without using regex
like this:
var id = '2345,45678,3333non,489,2333non';
var resArray = id.split(',').filter((item) => item.indexOf('non') === -1);
var resString = resArray.toString();
console.log(resString);
If you do not want to use arrow funtion:
var id = '2345,45678,3333non,489,2333non';
var resArray = id.split(',').filter(function(item) {
return item.indexOf('non') === -1;
});
var resString = resArray.toString();
console.log(resString);
You don't need regex for this. Just split on ,
and filter the array for all elements that don't end in non
.
var id = '2345,45678,3333non,489,2333non'
console.log(id.split(',').filter(x => !x.endsWith('non')).join(','))
Thanks to Nope for pointing out that endsWith()
will not work in IE. To get around this issue, see Mozilla's Polyfill for endsWith
or JavaScript endsWith is not working in IEv10.