Conversor de estilo de nomes (camelCase, snake_case …)
Converta nomes linha por linha, ou renomeie todas as chaves de um documento JSON, entre camelCase, PascalCase, snake_case, kebab-case e outros.
Como usar
- Com "Aplicar a" em "Cada linha do texto", cole ou digite seus nomes em "Entrada", um por linha. Cada linha é convertida separadamente, e as linhas em branco e os espaços ou tabulações no início ou no fim de uma linha são mantidos.
- Escolha um estilo em "Converter para", como camelCase, snake_case ou CONSTANT_CASE. A saída é atualizada enquanto você digita ou muda uma opção, então não há botão de converter.
- Para renomear as chaves de um documento JSON, defina "Aplicar a" como "Chaves JSON (valores inalterados)" e cole o documento inteiro. As chaves dentro de objetos e arrays aninhados também são renomeadas.
- No modo "Cada linha do texto", a caixa "Todos os estilos para a primeira linha" mostra a primeira linha da entrada que não está em branco nos dez estilos, para você compará-los antes de escolher um.
- Revise a "Saída" e clique em "Copiar resultado".
Perguntas frequentes
O texto que eu digito é enviado para algum lugar?
Não. A conversão é feita no seu navegador com JavaScript, e os nomes ou o JSON que você digita não são enviados à LeedyBox.
Como a ferramenta decide onde uma palavra termina e a próxima começa?
Uma nova palavra começa onde uma letra minúscula ou um dígito é seguido de uma maiúscula (fooBar, user2Name), antes da última maiúscula de uma sequência de maiúsculas quando ela é seguida de uma letra minúscula (XMLHttp vira XML e Http) e em qualquer caractere que não seja letra nem dígito, como espaço, sublinhado, hífen ou ponto. A passagem de letras para dígitos, ou de dígitos para letras, não inicia por si só uma nova palavra, então base64Encode vira base64_encode em snake_case e user2name continua sendo uma única palavra.
Por que não recebo o nome original de volta quando converto de novo?
Alguns detalhes se perdem no caminho. Cada palavra é reescrita com as maiúsculas e minúsculas do estilo escolhido, então parseHTML vira parse_html em snake_case e volta como parseHtml em camelCase. Um número também se junta à palavra anterior quando o separador desaparece: total_amount_2 vira totalAmount2 em camelCase e depois total_amount2 em snake_case. Guarde os nomes originais se precisar de uma conversão de ida e volta exata.
Por que a pontuação sumiu, e por que o Title Case põe maiúscula em todas as palavras?
Todo caractere que não é letra nem dígito é tratado como separação entre palavras. A pontuação e os símbolos não são copiados para a saída, e só o separador do próprio estilo, se ele tiver um, é colocado entre as palavras, então "Hello, world!" vira "hello world" em lower case e don't vira don t. O Title Case põe em maiúscula a inicial de cada palavra, inclusive das curtas, como de e da, e deixa o resto da palavra em minúsculas, então NASA vira Nasa e iPhone vira I Phone. A ferramenta foi pensada para nomes e identificadores, e não para frases.
O que acontece com chaves JSON como _id, @type ou $ref?
Um símbolo no início conta como separador e, por isso, é removido: em camelCase, _id vira id, @type vira type e $ref vira ref. Uma chave formada só por símbolos, como $, mantém o nome. Se duas chaves do mesmo objeto acabarem com o mesmo nome, por exemplo _id e id, ou user_name e userName, a ferramenta mostra um erro que indica as duas chaves e o caminho do objeto (como $ para o nível superior) e não converte nada, para que nenhum valor seja sobrescrito.
O modo JSON muda alguma coisa além das chaves?
O documento é analisado e escrito de novo com recuo de dois espaços, então os espaços e as quebras de linha podem mudar. Os números passam pelo JavaScript: 1.0 é escrito como 1 e 1e2 como 100, inteiros maiores que 9007199254740991 e decimais com muitos dígitos podem ser arredondados, e um número grande demais para o JavaScript, como 1e400, vira null. Alguns escapes em strings são escritos como caracteres simples, por exemplo \u00e9 como é e \/ como /. Chaves que são, ou passam a ser, números inteiros menores que 4294967295 sem zero à esquerda, como "2" ou "_3", vão para antes das outras chaves do objeto, em ordem numérica. Se a mesma chave aparecer duas vezes em um objeto, só o último valor é mantido, sem aviso. A entrada precisa ser JSON estrito, então comentários e vírgulas finais causam erro.
Funciona com letras acentuadas e escritas não latinas?
Letras de qualquer escrita contam como caracteres de palavra, e uma letra acentuada armazenada como um único caractere, como é, é tratada como qualquer outra letra. Escritas sem distinção entre maiúsculas e minúsculas, como coreano, chinês e japonês, mantêm os caracteres inalterados, e só os separadores entre as palavras seguem o estilo escolhido. A conversão entre maiúsculas e minúsculas segue as regras gerais do Unicode, então ß vira SS em UPPER CASE e o İ maiúsculo vira um i comum em minúsculas. Para nomes turcos ou azerbaijanos, ative "Letras turcas": aí I vira ı, e i vira İ. Marcas combinantes, como os sinais de tom do tailandês, os sinais vocálicos do tailandês e do hindi ou um acento armazenado como caractere separado, continuam ligadas à sua letra. Textos escritos sem espaços entre as palavras, como tailandês, chinês ou japonês, só são divididos onde há espaços ou outros separadores.