-
ID:jvTS2n さんの質問

javascriptでの文字列除去処理に関して質問があります。

カンマとダブルクオテーションがあるかどうかわからない文字列が例えば100個あるとします。

この時、カンマまたはダブルクオテーションがある文字列に関してはそれらを除去したいです。

調べたところ、それらは以下のような処理で簡単に出来るようでした。

文字列.split(",").join("");
文字列.replace(/\"/g,"Q");

質問としてはカンマまたはダブルクオテーションがあるかどうかをそれぞれの文字列毎にチェックしてから、もし、いずれか、または両方があるようであれば、それらの文字列除去のメソッドを呼ぶべきか、それとも、カンマまたはダブルクオテーションがあるかどうかのチェックを文字列毎に行なわずに、全ての文字列に対して文字列除去のメソッドを呼ぶべきか?

どちらが処理が速いのでしょうか?

また、どういったが適切でしょうか?

みんなの回答 3 件

ID:LGp1w6 さんの回答

100個ぐらいならどっちにしろ大差ないので、読みやすい方を書くのが適切だと思う。

ID:jvTS2n

なるほど、確かにそうですね!ありがとうございます^^
ちなみになのですが、もし、これが1億個とかあった場合はどっちが速いとかあるのでしょうか?

ID:WSoGPT

ほい jsperf.com/split-join-vs-replace/13

ID:zk8JiT

replaceの方が早いですね。ありがとうございます^ ^

ID:1rMh16 さんの回答

replace() はマッチと置換を同時にやるので、分ける意味はない。あとカンマとクォートは正規表現を使えば1文でチェックできる。処理があまり大量なようなら、任意のセパレータを挟んで一度 join() してから replace() して split() した方が速いかも。

ID:6TMrPn

JSの正規表現は遅くない?

ID:jvTS2n

ありがとうございます!

>任意のセパレータを挟んで一度 join() してから replace() して split() した方が速いかも

こちらはどういった意味合いでしょうか?["あ,ww" あっえあ あ,あ あああ]と4つ文字列があった場合だとすると。

ID:1rMh16

文字列中に出てこず、かつ置換にも使用しない文字、例えば | なんかを挟んで join() して1つの文字列にし、置換後、また | で split() する、という感じ。これだと置換は1回で済む。

ID:zk8JiT

トピ主です!なるほど!たしかにそれだと一回ですみますね!勉強になりました。ありがとうございます^ ^

ID:uFrMLr さんの回答

元素材でカンマ取ったほうが早いのでは。。。

最終更新日:2014-09-03 (2,850 views)

関連するトピックス

ページ上部に戻る