正则表达式,字符串 - 删除匹配元素

时间:2014-04-22 19:28:37

标签: jquery regex string indexing

我有以下格式的字符串:

apple|mango|banana|pineapple
(or)
mango|banana|pineapple
(or)
banana|pineapple

我想从这个字符串中删除匹配的元素 - 比如匹配的元素是芒果。

我需要字符串:apple|banana|pineapple

如果是苹果:

mango|banana|pineapple.

我该怎么做,如果我使用正则表达式,匹配元素我需要删除它和管道之前,这里匹配元素是动态的。请帮忙。

3 个答案:

答案 0 :(得分:0)

您可以将字符串拆分为数组,删除该项目,然后再次加入。

var s = 'apple|mango|banana|pineapple';
var itemToRemove = 'apple';
var items = s.split('|');
var itemToRemoveIndex = $.inArray(itemToRemove, items);
if (itemToRemoveIndex != -1) {
    items.splice(itemToRemoveIndex, 1);
    s = items.join('|');
}

演示:http://jsfiddle.net/xerA9/

答案 1 :(得分:0)

您好像正在寻找String.split() Javascript方法。

var fruit = "apple|mango|banana|pineapple";
var fruitArr = fruit.split("|"); // ["apple","mango","banana","pineapple"]

然后,您可以使用Array.indexOf()Array.splice()方法将其删除。 这将仅删除找到的第一个实例,因为indexOf在找到匹配项后中止。

fruitArr.splice(fruitArr.indexOf("mango"), 1);
// Returns ["mango"] but fruitArr has been modified to ["apple","banana","pineapple"]

fruitArr在使用splice修改后,可以像这样重新合并:

fruitArr.join("|"); // "apple|banana|pineapple"

请参阅Ulugbek关于更多故障安全版本的答案 - 但要注意它取决于jQuery。

答案 2 :(得分:0)

您可以尝试以下简单的替换方法:

youString.replace(/\|*mango/g, '')

' *'在' |'之后如果它在字符串的开头就会捕获芒果。