我想从每个值中删除“()”。我会怎么做?JavaScript修剪字符
var arr = ["(one)","(two)","(three)","(four)","(five)"];
for(var i = 0; i < arr.length; i++){
console.log(arr[i]);
}
我想从每个值中删除“()”。我会怎么做?JavaScript修剪字符
var arr = ["(one)","(two)","(three)","(four)","(five)"];
for(var i = 0; i < arr.length; i++){
console.log(arr[i]);
}
这匹配(
之后是不是)
后跟)
。也将失败"(test(ing)123)",
(如果你愿意)
var arr = ["(one)","(two)","(three)","(four)","(five)"];
for(var i = 0; i < arr.length; i++) {
arr[i] = arr[i].replace(/\(([^)]+)\)/g, "$1");
}
这是更为简单/更快(但可以说是更脆):
var arr = ["(one)","(two)","(three)","(four)","(five)"];
for(var i = 0; i < arr.length; i++) {
arr[i] = arr[i].substr(1, arr[i].length - 2);
}
var arr = ["(one)","(two)","(three)","(four)","(five)"];
for(var i = 0; i < arr.length; i++){
var arrLength = arr[i].length -2;
var shortArr = arr[i].substr(1,arrLength);
console.log(shortArr);
}
这得到一个字符少的正面和返回
由于所有其他答案都不必要地复杂,因此这里有一个简单的答案:
arr = arr.map(s => s.slice(1, -1));
如果您愿意,也可以在原地进行;重要的部分是.slice(1, -1)
,它从索引1
(第二个字符)处的字符开始并在最后一个字符(-1
)之前结束。
将失败''测试'' – Tibrogargan
@Tibrogargan:请看清楚的评论,提问者确认*每个*值将以'('和')'开始和结束。 – Ryan
's.substr(1,s.length -2)'比'slice(1,-1)'更有效率,for循环比map更高效。你怎么选择他们?没关系,substr和slice似乎是相同的w /更多的测试 – Tibrogargan
这是速度快,应该工作无论多少括号在字符串中,将它们全部删除。
arr[i] = arr[i].split(/\(|\)/g).join("");
这并不快。它甚至比我的正则表达式还要慢 – Tibrogargan
@Tibrogargan哈哈,你可能有一点我的正则表达式很慢,我对正则表达式不太熟练。我可以为我的正则表达式做这个'/ [\\(\\)]/g',但我不知道它是否更有效率......当我说“快”时,我指的是使用string.split ()和string.join组合在JavaScript中...我可能应该澄清。 – JustSomeDude
@Tibrogargan这个答案不会传递本页提到的所有测试用例,包括“(test(ing)123)”,其中“更快”的正则表达式实际上会失败......所以可以争论你的正则表达式是否“更快” :) – JustSomeDude
是否每个值都以'('和')'开始和结束? – Ryan
是的,我真的想从每个值中删除(和)。 – Roth