Under_score_case'i CamelCase olarak değiştirmek için Notepad ++ kullanın?


19

Bulmak için NP ++ normal bir ifade yazabilirsiniz under_score_case. Vurgulayıp seçerek büyük ve küçük harf büyük / küçük harf değiştirmek için NP ++ TextFX kullanabilirsiniz.

Bunları birleştirip dönüştürmek under_score_caseiçin NP ++ 'ın Bul / Değiştir veya TextFX'in bul ve değiştir özelliğini nasıl kullanabilirim camelCase?

Nasıl bir komut dosyası kullanmayın np ++ ile öğrenmek istiyorum.

Örnek giriş:

this is_a_line
some more_data_over_here
whoop de_do_da

Istenilen çıktı:

this isALine
some moreDataOverHere
whoop deDoDa

Alt çizgilere uygun regex olurdu _([a-z]). Ben var olduğunu düşünüyorum, ama bulamıyorum gibi bir şey _\toupper\1.

Yanıtlar:


6

Uzun ve kıvrık, ancak Notepad ++ ile çalışacak bir çözüm var. Normal ifade, isteğe bağlı olarak normal arama ve değiştirme ile TextFX kullanımını gerektirir.

  1. Her kelimenin önüne bir yer tutucu karakter ekledim, seçtim Z. Muhtemelen alfabetik olmak zorunda değildir, ancak son adım için daha kolaydır. Normal ifadeyi kullanarak arayın \<([^ ]*)\>ve değiştirin Z\1.
  2. Varolan boşlukları benzersiz bir yer tutucu dizisiyle değiştirin. # Boşluk # seçtim. Bu normal ifade ile yapılabilir, ancak normal veya genişletilmiş kullanmayı tercih ederim.
  3. Alt çizgileri boşluklarla değiştirin. Değiştirilmemesi gereken alt çizgiler varsa, muhtemelen özel bir normal ifade gereklidir. Sadece düz bir arama yaptım ve değiştirdim.
  4. Tüm metni seçin ve TextFX menüsünden öğesini seçin TextFX Characters -> Proper Case.
  5. Şimdi ilk 3 adımı tersine çevirmeliyiz. Boşlukları arayın ve hiçbir şey kullanmayın. Ardından, yer yer tutucu dizinizi arayın ve bir boşlukla değiştirin. Son olarak regex kullanarak arama yapın \<Z([^ ]*)\>ve değiştirin \1.

Kıvrık, ama işe yarıyor.
Freiheit

Notepad ++ 'ın regex ile başarısızlıkları, özellikle satırlar arasında bulup değiştirmem veya sekme gibi özel karakterler kullanmam gerektiğinde, daha önce böyle çözümler üretmeme neden oldu.
MBraedley

Bir kenara, NP ++ 'daki proje lideri (hatırladığım kadarıyla Bay Ho) vim benzeri değiştirme desteği sunma konusunda herhangi bir ses çıkardı mı? Bunu destekleyen herhangi bir eklenti var mı? NP ++ ve TextFX gerçekten güçlü, onları birleştirmek için biraz daha fazlasına ihtiyaçları var.
Freiheit

Projeyi gerçekten takip etmiyorum, ancak Scintilla kullanımı ile kısıtlandığını hayal ediyorum.
MBraedley

1
Bir uyarı: Her kelimedeki ikinci ve sonraki karakter büyük harfse, küçük harf yapılır, örneğin ALL_CAPSolur allCaps.
Gnubie

15

Basit bir bulma / değiştirme bunu NP ++ ile yapacaktır:

bul: [_]{1,1}([a-z])

Değiştir: \U$1

Bunun çalışması için Değiştir panelinde 'Normal ifade' radyo düğmesini seçmeniz gerekir.


5
Veya _(.)arama dizesi gibi.
Dominic Comtois

PascalCase (bir adımda) istiyorsanız, Bul: (?:^|_)([a-z]) Değiştir: \U$1$2
Rubenisme

6

Vim'i genellikle editör olarak kullanıyorum. Aşağıdaki düzenli ifade vim'de yapmaya çalıştığınız şeyi gerçekleştirir:

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

Ne söyleyebilirim ( Ben biraz NP + + ile aptal ) Notepad ++ \uPerl Regexp büyük makro anlamıyor . Bunu tamamen Notepad ++ ile yapamayabilirsiniz. Umarım biri yanlış olduğunu kanıtlar ve gününüzü yapar.


Evet, Windows ortamında kaldım. Verileri bir * nix veya OS X makinesine kopyalamak işe yarıyor, ama çok zarif. NP ++ 'da diğer takım arkadaşlarını da eğitebilirim.
Freiheit

Aynı ifadenin eMac'lerde de işe yaradığını düşünüyorum. EMac bilgim puslu. . .
surfasb

@Freiheit Pencereler için bir vim var; Her ne kadar ++ np crosstraining diğer takım arkadaşlarıyla o olmaz yardım
Matris Mole

Bu aslında Notepad ++ son sürümlerinde iyi çalışıyor gibi görünüyor (6.7.7 kullanıyorum).
levant alaca

3

Bunu notepad ++ 'ta bir adımla yapabilirsiniz, ki bu muhtemelen daha yararlıdır:

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

Bununla ilgili tek sorun, düşük puanın mevcut olabileceği maksimum zamanı ve dizenin nasıl bittiğini bilmeniz gerektiğidir. Yukarıdaki örnekte, php dosya adlarını camelCase'e değiştiriyorum, altında puanın 3 kereden fazla mevcut olmadığını bilerek, daha az sorun yok.


2

Benim kişisel favorim sed. Şimşek çakıyor:

> echo Instagram Hesabındaki Resim ve Videoları make_me_camel_case_please sed -e 's / (_ [az]) / \ U \ 1 / g' -e 's / _ // g'

makeMeCamelCasePlease

Değiştirmeyi düzenlemekte olduğunuz bir dosyada gerçekleştirmek için -i seçeneğini kullanabilirsiniz ve N ++ değişikliği almalıdır.

Bu, yukarıdaki çözümlerde olduğu gibi tüm alt çizgileri de silecektir. Bu bir sorun olduğunda düzeltilebilir.


2
  • Aşağıdaki adımları izleyerek Notepad ++ kullanarak yapabilirdim.

  • Yılan kasası girişini, küçük harfle yazılmamışsa tüm küçük harfe dönüştürün

  • Değiştir formunu açın ( Arama-> Değiştir VEYA Ctrl + H )
  • Normal İfadeyi Kontrol Et radyo düğmesi
  • Arayın _([a-z])OR_(.)
  • Tarafından yerine \u\1girdi

0

Notepad ++ 7.3 ile çalışıyorum. Aynı sorunu yaşadım ve aşağıdakileri yaptım:

  1. Ctrl+ H(bulma formunu göster)
  2. Normal İfadeyi Kontrol Et radyo düğmesi
  3. «_ ([Az] +)» için arama yapın
  4. «\ U \ 1» ile değiştirin

Ve çalıştı!


Böylece bu, tüm harfleri küçük harfe çevirir ve ardından alt çizgileri izleyen harfleri büyük yapar, değil mi? Yani We use the bean_counter variable, which was Fred's ideadeğiştirildi olacaktır we use the beanCounter variable, which was fred's idea(zaten büyük harfle edildi harfleri lowercasing)? Bu tatmin edici görünmüyor.
Scott

Teşekkürler, Scott, fikri tam olarak anlamadım, umarım şimdi iyi olur.
Francisco M

Evet, bu daha iyi. Muhtemelen biraz basitleştirebilirsiniz: sadece «_ ([az])» (olmadan) arayın +. Ne yazık ki, bu aslında önceki cevapların birçoğuna eşdeğerdir.
Scott

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.