如何从字符串元素数组中删除子字符串(前缀)? (从每个元素中删除子字符串)
答案 0 :(得分:38)
使用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
答案 1 :(得分:10)
已经给出的许多答案都是错误的,因为它们会从每个元素中的任何位置(不仅仅是开头)中删除目标字符串。这是另一种方法:
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), '');
答案 2 :(得分:8)
var pre = 'prefix_';
my_arr = my_arr.map(function(v){ return v.slice(pre.length); });
See MDN如果需要.map()
的完整浏览器支持。
如果您需要保留原始数组,也可以使用.forEach()
。
var pre = 'prefix_';
my_arr.forEach(function(v,i){ my_arr[i] = v.slice(pre.length); });
答案 3 :(得分:8)
function trimPrefix(str, prefix) {
if (str.startsWith(prefix)) {
return str.slice(prefix.length)
} else {
return str
}
}
var prefix = "DynamicPrefix"
trimPrefix("DynamicPrefix other content", prefix)
答案 4 :(得分:4)
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
答案 5 :(得分:2)
仅限于某种变化:
substr = new RegExp('(^|\|)prefix_', 'g');
arr = arr.join('|').replace(substr, '').split('|')
编辑 - 显示如何使用正确的正则表达式限制前缀。
答案 6 :(得分:1)
只需迭代字符串列表(例如使用for循环)并使用replace
方法(details here)
答案 7 :(得分:1)
只需循环浏览它们吗?
var list = ["foo", "bar", "meh"];
for(var i = 0; i < list.length; i++)
list[i] = list[i].substr(1, 1);
答案 8 :(得分:1)
您可以使用jQuery map
函数 -
var arr = $.map(['a1', 'a2'],function (s) {
return s.replace(/^a/,'');
});
答案 9 :(得分:1)
我会做this:
var element = document.getElementsByTagName('p');
for(i in element){
str = element[i].innerHTML;
str = str.replace(/^pre_/,'');
element[i].innerHTML = str;
}