我想從每個值中刪除「()」。我會怎麼做?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