Подтвердить что ты не робот

Удалить префикс из списка строк

Как удалить подстроку (префикс) из массива строковых элементов? (удалите подстроку из каждого элемента)

4b9b3361

Ответ 1

Используя RegExp и ^, чтобы убедиться, что это префикс, а не только где-то в строке:

var arr = ['a1', 'a2', 'a54a'];
for(var i = 0, len = arr.length; i < len; i++) {
    arr[i] = arr[i].replace(/^a/, '');
}
arr; // '1,2,54a' removing the 'a' at the begining

Ответ 2

Многие из уже предоставленных ответов неверны, поскольку они удаляют целевую строку из любого места в каждом из элементов (а не только в начале). Здесь другой подход:

var str = "str_";
["str_one", "str_two_str_", "str_three"].map(function(el) {
    return el.replace(new RegExp("^" + str), '');
});

Результат:

["one", "two_str_", "three"]

Или, если вам нравится простая итерация (без функции более высокого порядка):

var str = "str_";
var list = ["str_one", "str_two_str_", "str_three"];
for (var i = 0; i < list.length; i++)
    list[i] = list[i].replace(new RegExp("^" + str), '');

Ответ 3

var pre = 'prefix_';

my_arr = my_arr.map(function(v){ return v.slice(pre.length); });

См. MDN, если требуется полная поддержка браузера для .map().

вы также можете использовать .forEach(), если вам нужно сохранить исходный массив.

var pre = 'prefix_';

my_arr.forEach(function(v,i){ my_arr[i] = v.slice(pre.length); });

Ответ 4

function trimPrefix(str, prefix) {
    if (str.startsWith(prefix)) {
        return str.slice(prefix.length)
    } else {
        return str
    }
}

var prefix = "DynamicPrefix"
trimPrefix("DynamicPrefix other content", prefix)

Ответ 5

var i;
for(i = 0; i < arr.length; i++)
    arr[i] = arr[i].replace(substr, '');

Пример:

var arr = ['test1', '2test', '3test3'];

// Use only one of these lines
var substr = 'test';  // This is for substrings
var substr = /^test/; // This is for prefixes only

var i;
for(i = 0; i < arr.length; i++)
    arr[i] = arr[i].replace(substr, '');

console.log(arr); // Prints ["1", "2", "33"] to console

Ответ 6

Просто для некоторого разнообразия:

substr = new RegExp('(^|\|)prefix_', 'g');
arr = arr.join('|').replace(substr, '').split('|')

edit - показать, как вы можете ограничить только префикс правильным регулярным выражением.

Ответ 7

Просто перебирайте список строк (например, для цикла for) и используйте метод replace (подробности здесь)

Ответ 8

Просто проведите через них?

var list = ["foo", "bar", "meh"];
for(var i = 0; i < list.length; i++)
    list[i] = list[i].substr(1, 1);

http://jsfiddle.net/DcvE2/1/

Ответ 9

Вы можете использовать функцию jQuery map -

var arr = $.map(['a1', 'a2'],function (s) {
    return s.replace(/^a/,'');
});

Ответ 10

Я бы сделал this:

var element = document.getElementsByTagName('p');
for(i in element){
 str = element[i].innerHTML;
 str = str.replace(/^pre_/,'');
 element[i].innerHTML = str;
}

Ответ 11

Если вы уже используете lodash, _.trimStart(item, prefix) может быть хорошим решением. Смотрите документацию.