Use o Notepad ++ para alterar o under_score_case para o CamelCase?

19

Eu posso escrever uma expressão regular no NP ++ para encontrar under_score_case . Eu posso usar o TextFX no NP ++ para alterar maiúsculas e minúsculas, realçando e selecionando.

Como eu posso usar o Find / Replace do NP ++ ou o TextFX's para localizar e substituir os mesmos e converter under_score_case to camelCase ?

Eu quero aprender como fazer isso no NP ++ não usar um script.

Exemplo de entrada:

this is_a_line
some more_data_over_here
whoop de_do_da

Saída desejada:

this isALine
some moreDataOverHere
whoop deDoDa

A regex para corresponder aos underscores seria _([a-z]) . A substituição que eu acho que existe, mas não consigo encontrar é algo como _\toupper .

    
por Freiheit 18.07.2011 / 21:41

7 respostas

6

Eu tenho uma solução longa e complicada, mas funcionará no Notepad ++. Requer o uso de regex, busca e substituição opcionalmente normais, assim como TextFX.

  1. Adicione um caractere de espaço reservado à frente de cada palavra, escolhi Z . Provavelmente não precisa ser alfabético, mas é mais fácil para a última etapa. Usando regex, procure por \<([^ ]*)\> e substitua por Z .
  2. Substitua espaços existentes por uma sequência exclusiva de espaço reservado. Eu escolhi # espaço #. Isso pode ser feito com regex, mas eu prefiro usar normal ou expandido.
  3. Substitua os sublinhados por espaços. Se houver algum sublinhado que não deva ser substituído, provavelmente será necessário um regex personalizado. Acabei de fazer uma pesquisa direta e substituir.
  4. Selecione todo o texto e, no menu TextFX, selecione TextFX Characters -> Proper Case .
  5. Agora precisamos reverter as 3 primeiras etapas. Procure por espaços e substitua-os por nada. Em seguida, pesquise sua sequência de espaço reservado de espaço e substitua por um espaço. Finalmente, usando regex, procure por \<Z([^ ]*)\> e substitua por .
por 19.07.2011 / 02:10
11

Um simples localizar / substituir fará isso no NP ++:

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

Substituir: \U$1

Você precisa selecionar o botão de opção "Expressão regular" no painel "Substituir" para que isso funcione.

    
por 18.11.2015 / 15:03
5

Eu geralmente uso o vim como editor. A seguinte expressão regular realiza o que você está tentando fazer no vim:

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

Pelo que eu posso dizer ( eu brinquei com o NP ++ por um pouco ), o Notepad ++ não entende a macro em maiúscula \u no Perl Regexp. Você pode não ser capaz de fazer isso inteiramente com o Notepad ++. Espero que alguém prove que estou errado e faça o seu dia.

    
por 18.07.2011 / 22:06
3

Você pode fazer isso com um passo no notepad ++, o que provavelmente é mais útil:

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

O único problema com isso é que você precisa saber o tempo máximo em que a pontuação inferior pode estar presente e como a sequência termina. No exemplo acima, estou substituindo nomes de arquivos php para camelCase, sabendo que a pontuação inferior não pode estar presente mais de 3 vezes, menos não é problema.

    
por 26.09.2015 / 16:59
2

Meu favorito pessoal é sed. É muito rápido:

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

makeMeCamelCasePlease

Você pode usar a opção -i para executar a substituição em um arquivo que está editando e o N ++ deve selecionar a alteração.

Isso também excluirá todos os sublinhados, como em algumas soluções acima. Isso pode ser corrigido se isso for um problema.

    
por 17.06.2013 / 19:40
0

Eu trabalho com o Notepad ++ 7.3. Eu tive o mesmo problema e fiz o seguinte:

  1. Ctrl + H (mostrar formato de pesquisa)
  2. Verifique o botão de opção Expressão Regular
  3. Procure por «_ ([a-z] +)»
  4. Substituir por "\ u \ 1"

E funcionou!

    
por 26.04.2017 / 19:25
-1

Eu encontrei este problema e descobri uma excelente solução

  1. Substitua todos os sublinhados ("_") por espaços ("")

  2. Altere a primeira letra de cada palavra para uma letra maiúscula carta

  3. Substitua todos os espaços ("") por um espaço vazio ("")

  4. Feito.

por 27.10.2015 / 04:55