메모장 ++을 사용하여 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

길고 복잡한 솔루션이 있지만 메모장 ++에서 작동합니다. TextFX뿐만 아니라 정규 검색, 선택적으로 일반 검색 및 바꾸기를 사용해야합니다.

  1. 각 단어 앞에 자리 표시 자 문자를 추가하고을 선택했습니다 Z. 알파벳 일 필요는 없지만 마지막 단계에서는 더 쉽습니다. 정규식을 사용하여을 검색 \<([^ ]*)\>하고 바꿉니다 Z\1.
  2. 기존 공간을 고유 한 자리 표시 자 순서로 바꿉니다. # space #를 선택했습니다. 이것은 정규식으로 수행 할 수 있지만 일반 또는 확장을 사용하는 것을 선호합니다.
  3. 밑줄을 공백으로 바꾸십시오. 교체하지 말아야 할 밑줄이 있으면 사용자 정의 정규식이 필요할 수 있습니다. 방금 검색하고 교체했습니다.
  4. 모든 텍스트를 선택하고 TextFX 메뉴에서을 선택하십시오 TextFX Characters -> Proper Case.
  5. 이제 첫 3 단계를 반대로해야합니다. 공백을 검색하고 공백으로 바꾸십시오. 그런 다음 공백 자리 표시 자 시퀀스를 검색하고 공백으로 바꿉니다. 마지막으로 정규 표현식을 사용하여을 검색 \<Z([^ ]*)\>하고 바꿉니다 \1.

복잡하지만 작동합니다.
Freiheit

메모장 ++에서 정규 표현식을 사용하지 못했기 때문에 이전에 이와 같은 솔루션을 만들었습니다. 특히 줄을 찾아서 바꾸거나 탭과 같은 특수 문자를 사용해야 할 때 특히 그렇습니다.
MBraedley

제쳐두고, NP ++ 프로젝트 (호 (Mr. Ho))는 vim과 같은 대체 지원을 도입하는 데 방해가 되었습니까? 그것을 지원하는 플러그인이 있습니까? NP ++와 TextFX는 매우 강력하므로 함께 연결하려면 조금 더 필요합니다.
Freiheit

나는 실제로 프로젝트를 따르지 않지만 신 틸라의 사용으로 인해 제약을 받았다고 생각합니다.
MBraedley

1
한 가지주의 사항 : 각 단어의 두 번째 및 이후 문자가 대문자이면 소문자 ALL_CAPSallCaps됩니다 ( 예 : 가 됨) .
Gnubie

15

간단한 찾기 / 바꾸기는 NP ++ 에서이 작업을 수행합니다.

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

바꾸다: \U$1

이 작업을 수행하려면 바꾸기 패널에서 '정규 표현식'라디오 버튼을 선택해야합니다.


5
또는 _(.)검색 문자열과 동일합니다.
Dominic Comtois

한 단계에서 PascalCase를 원하면 찾기 : (?:^|_)([a-z]) 바꾸기 : \U$1$2
Rubenisme

6

저는 보통 vim을 편집자로 사용합니다. 다음 정규 표현식은 vim에서 수행하려는 작업을 수행합니다.

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

내가 알 수있는 것 ( 나는 NP ++로 조금 바보짓했다 )에서 메모장 ++은 \uPerl Regexp 의 대문자 매크로 를 이해하지 못합니다 . 메모장 ++로 완전히 수행하지 못할 수도 있습니다. 바라건대, 누군가 나를 잘못 증명하고 하루를 보낼 것입니다.


예, 저는 Windows 환경에 갇혀 있습니다. * nix 또는 OS X 머신으로 데이터를 복사하는 것은 작동하지만 거의 작동하지 않습니다. 또한 NP ++에서 다른 팀원을 교차 훈련시킬 수 있습니다.
Freiheit

eMac에서도 같은 표현이 효과가 있다고 생각합니다. 나의 eMac 지식은 흐릿하다. . .
surfasb

@Freiheit 창문을위한 vim이 있습니다; 비록 그것이 다른 팀원들을 NP ++로 크로스 트레이닝하는 데 도움이되지는 않지만
Matrix Mole

이것은 실제로 최신 버전의 Notepad ++에서 잘 작동하는 것 같습니다 (6.7.7을 사용하고 있습니다).
levant 님이

3

메모장 ++에서 한 단계 만으로이 작업을 수행 할 수 있습니다.

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
  • 뱀 케이스를 변환하십시오. 아래 단계에 따라 메모장 ++을 사용 하여이 작업을 수행 할 수 있습니다.

  • 뱀 문자 입력을 소문자가 아닌 경우 모두 소문자로 변환

  • 바꾸기 양식을 엽니 다 ( 검색-> 바꾸기 또는 Ctrl + H )
  • 정규식 확인 라디오 버튼
  • _([a-z])OR을 찾으십시오_(.)
  • \u\1입력으로 교체

0

메모장 ++ 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됩니까? 불만족스러운 것 같습니다.
Scott

고맙습니다, 스캇, 나는 그 아이디어를 완전히 이해하지 못 했으므로 이제는 그것이 좋기를 바랍니다.
Francisco M

예, 더 좋습니다. 아마도 약간 단순화 할 수도 있습니다.«_ ([az])»()없이 찾으십시오 +. 불행히도 이것은 이제 본질적으로 이전의 여러 답변과 동일합니다.
Scott

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.