Notepad ++を使用してunder_score_caseをCamelCaseに変更しますか?


19

NP ++で正規表現を記述して見つけることができますunder_score_case。NP ++でTextFXを使用して、強調表示して選択することで大文字と小文字を変更できます。

NP ++の検索/置換またはTextFXの検索と置換を使用under_score_caseして、これらをつなぎ合わせて変換するにはcamelCaseどうすればよいですか?

スクリプトを使用せずにNP ++でこれを行う方法を学びたいです。

サンプル入力:

this is_a_line
some more_data_over_here
whoop de_do_da

望ましい出力:

this isALine
some moreDataOverHere
whoop deDoDa

アンダースコアに一致する正規表現はになります_([a-z])。私が考えている代替品はありますが、見つけることができません_\toupper\1

回答:


6

長くて複雑なソリューションがありますが、Notepad ++で動作します。正規表現の使用、オプションで通常の検索と置換、TextFXが必要です。

  1. 各単語の前にプレースホルダー文字を追加して、を選択しましたZ。おそらくアルファベットである必要はありませんが、最後のステップでは簡単です。正規表現を使用して、を検索し\<([^ ]*)\>、で置き換えZ\1ます。
  2. 既存のスペースを一意のプレースホルダーシーケンスに置き換えます。#space#を選択しました。これは正規表現で行うことができますが、通常または拡張を使用することを好みます。
  3. アンダースコアをスペースに置き換えます。置き換えるべきではないアンダースコアがある場合は、おそらくカスタム正規表現が必要です。まっすぐに検索して置き換えました。
  4. すべてのテキストを選択し、TextFXメニューからを選択しますTextFX Characters -> Proper Case
  5. ここで、最初の3つのステップを逆にする必要があります。スペースを検索し、何も置き換えないでください。次に、スペースプレースホルダーシーケンスを検索し、スペースに置き換えます。最後に、正規表現を使用して、を検索し\<Z([^ ]*)\>て置換し\1ます。

複雑ですが、動作します。
フライハイト

Notepad ++の正規表現の失敗により、特に複数行にわたる検索と置換が必要な場合、またはタブなどの特殊文字を使用する必要がある場合に、以前にこのような解決策を思いつきました。
MBraedley

余談ですが、NP ++(私が覚えているようにHo氏)のプロジェクトリーダーは、vimのような置換サポートの導入について騒ぎ立てましたか?それをサポートするプラグインはありますか?NP ++とTextFXは本当に強力です。それらをつなぎ合わせるにはもう少し必要です。
フライハイト

私は実際にこのプロジェクトをフォローしていませんが、彼はScintillaの使用に制約されていると思います。
MBraedley

1
注意点:各単語の2番目以降の文字が大文字の場合、小文字にALL_CAPSなりallCapsます(例:になります)。
グヌビー

15

NP ++では、単純な検索/置換によりこれが行われます。

見つける: [_]{1,1}([a-z])

交換: \U$1

これを機能させるには、[置換]パネルの[正規表現]ラジオボタンを選択する必要があります。


5
または、単に_(.)検索文字列として。
ドミニクコントワ

PascalCaseが必要な場合は(1ステップで)[ 検索] を使用できます (?:^|_)([a-z]) 置換: \U$1$2
Rubenisme

6

私は通常、vimをエディターとして使用します。次の正規表現は、vimで実行しようとしていることを実現します。

%s/_\([a-zA-Z]\)/\u\1/g

私が知ることができることから(少しNP ++にだまされた)、Notepad ++は\uPerl Regexpの大文字マクロを理解しません。Notepad ++ではこれを完全に行うことができない場合があります。うまくいけば、誰かが私を間違っていることを証明し、あなたの一日を作ります。


うん、私はWindows環境で立ち往生しています。データを* nixまたはOS Xマシンにコピーすることはできますが、ほとんど正常ではありません。NP ++で他のチームメイトをクロストレーニングすることもできます。
フライハイト

同じ表現がeMacでも機能すると思います。私のeMacの知識は曖昧です。。。
surfasb

@Freiheit Windowsにはvimがあります。それはNP ++にcrosstraining他のチームメイトとの助けませんが
マトリックスモグラ

これは実際、Notepad ++の最近のバージョンではうまく機能しているようです(私は6.7.7を使用しています)。
レバント

3

これは、おそらく便利なnotepad ++の1ステップで実行できます。

Find: ([a-z]+)[_]?([a-z]?)([a-z]+)[_]?([a-z]?)([a-z]+)[_]?([a-z]?)([a-z]+)\.php
Replace: $1\U$2\L$3\U$4\L$5\U$6\L$7

これに関する唯一の問題は、アンダースコアが存在できる最大時間と文字列の終了方法を知る必要があるということです。上記の例では、phpファイル名をcamelCaseに置き換えていますが、アンダースコアが3回を超えて存在することはできないので、問題は少なくなります。


2

私の個人的なお気に入りはsedです。超高速です:

> echo make_me_camel_case_please | sed -e 's /(_ [az])/ \ U \ 1 / g' -e 's / _ // g'

makeMeCamelCasePlease

-iオプションを使用して、編集中のファイルで置換を実行できます。N++は変更を取得する必要があります。

上記のソリューションのように、これによりすべての下線も削除されます。これが問題になる場合は修正できます。


2
  • スネークケースを変換する次の手順に従って、Notepad ++を使用してこれを行うことができます。

  • スネークケースの入力をすべて小文字に変換します(既に小文字でない場合)

  • 置換フォームを開きます(検索->置換またはCtrl + H
  • [正規表現をチェック]ラジオボタン
  • _([a-z])ORを探す_(.)
  • \u\1入力で置換

0

Notepad ++ 7.3を使用しています。私は同じ問題を抱えていて、次のことをしました。

  1. Ctrl+ H(検索フォームを表示)
  2. [正規表現をチェック]ラジオボタン
  3. «_([az] +)»を探します
  4. «\ u \ 1»に置き換えます

そして働いた!


したがって、これはすべての文字を小文字に変更、アンダースコアに続く文字を大文字にしますか?そうWe use the bean_counter variable, which was Fred's ideaするために変更されますwe use the beanCounter variable, which was fred's idea(既に大文字にした文字を小文字に)?これは不十分なようです。
スコット

スコット、ありがとう、私はその考えを完全には理解していなかったので、今はうまくいくことを望んでいる。
フランシスコM

はい、それはましです。おそらくそれを少し単純化することができます:«_([az])»(を除く)を探すだけです+。残念ながら、これはこれまでの回答のいくつかと本質的に同等です。
スコット

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.