各値から "()"を削除します。どうすればいい?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]);
}
これは(
と一致し、その後に)
でないものが続き、その後に)
と一致します。 (あなたが気にしている場合)も
var arr = ["(one)","(two)","(three)","(four)","(five)"];
for(var i = 0; i < arr.length; i++) {
arr[i] = arr[i].replace(/\(([^)]+)\)/g, "$1");
}
これは、はるかにシンプル/高速化(しかし、間違いなく、より脆い)である"(test(ing)123)",
のために失敗します:
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);
}
これは前面に1つの少ない文字を取得し、戻る
他のすべての回答は不必要に複雑なので、ここでは単純なものです:
arr = arr.map(s => s.slice(1, -1));
好きな場所でインプレイスでも実行できます。重要な部分は.slice(1, -1)
であり、インデックス1
(第2文字)の文字から始まり、最後の文字(-1
)の前に終わる部分文字列をとります。
は '' test ''のために失敗するでしょう – Tibrogargan
@Tibrogargan:質問者が*すべての*値が'( 'と') 'で始まり、終わることを確認したコメントを明確にしてください。 – Ryan
's.substr(1、s.length -2)'は 'slice(1、-1)'よりも効率的で、forループは 'map'よりも効率的です。どうして彼らを選んだの?決して気にしないでください、substrとスライスは、より多くのテストと同じであるようです。 – Tibrogargan
これは高速であり、文字列であり、それはそれらをすべて削除しますどのように多くの括弧に関係なく動作するはずです。
arr[i] = arr[i].split(/\(|\)/g).join("");
これは高速ではありません。それは私の正規表現 – Tibrogargan
@Tibrogargan笑よりも遅いです、あなたは私の正規表現が遅い点があるかもしれませんが、私は正規表現にあまり堪能ではありません。私は正規表現のためにこれを/ [\\(\\)]/gすることができたかもしれませんが、私はそれがより効率的かどうかわかりません...私がstring.splitを使って "fast" ()とjavascriptのstring.joinの組み合わせ...私はおそらく明らかにする必要があります。 – JustSomeDude
@Tibrogarganこの答えは、あなたの "高速"正規表現が実際には失敗する "(test(ing)123)"を含む、このページで言及されたすべてのテストケースを通過します...あなたの正規表現が " :) – JustSomeDude
すべての値は '('と ')'で始まり、終わりになりますか? – Ryan
はい、実際には各値から(と)を削除したいと思います。 – Roth