シェアする

  • このエントリーをはてなブックマークに追加

[PhpStorm]”(ダブルクォーテーション)を'(シングルクォーテーション)にまとめて置き換える

メモです。

PhpStormでクォートされた文字列をクリックしてしばらく待つと、左脇に電球アイコンが表示されて「Replace quotes」というメニューが選択できます。

シングルクォーテーションで囲われた文字列はダブルクォーテーションに、ダブルクォーテーションならシングルクォーテーションという風に、クォート文字を変更できます。

ただこの方法では複数のクォート文字を変更するのに骨が折れます。
そんな時は一括置換を使いましょう。

正規表現の置換

ソースウィンドウにカーソルがある状態で「command(winならCtrl) + R」で置換ウィンドウを表示。

入力欄の上が検索文字列、下が置換後の文字列になっていますので、上に「”(.*?)”」下に「’$1’」と入力して、Regex(正規表現)にチェックを入れて置換(Replace)してみましょう。

この方法はPhpStormに限らず、正規表現の置換に対応したエディタ(sakuraエディタとかDreamWeaverなんかもOK)であれば対応出来ます。*[1]

ちょっと解説

正規表現の置換では、検索文字列の丸括弧で囲った部分を置換後の文字列に利用できます。

この場合はダブルクォーテーションで囲われた文字列「.*」*[2] を最短一致「?」*[3] で指定して、得られた文字列「$1」をシングルクォーテーションに挟んだ文字列に置換指定ます。

正規表現の置換を使うと今回のように内包された値を残して外側の部分をだけを置換するといったことが可能になるので、例えばHTMLのタグをまとめて変更するような置換にも使えたりします。

<p>(.*?)</p>		// 検索
<span>$1</span>		// 置換
  1. エディタによってパターンの置き換えがバックスラッシュnumだったりすることもありますので、うまくいかなかったらエディタのヘルプを参照してみてください。 []
  2. .はメタ文字で改行を除く何らかの文字を表し、*は量指定子で0回以上連続する文字を表すので、””の中の文字列全部という意味になります []
  3. 量指定子の直後に?をつけると最短一致となります。たとえば”hoge” => “fuga”は?を付けないと’hoge” => “fuga’という風に置換されてしまい、クォートが壊れてしまいますが?を付けることで’hoge’ => ‘fuga’のようにクォートされた箇所をそれぞれ置換できます。 []

シェアする

  • このエントリーをはてなブックマークに追加

フォローする