O desafio
Eu estava lendo o Java Style Guide do Google outro dia e me deparei com o algoritmo deles para converter qualquer string arbitrária em notação camelCase. Nesse desafio, você precisa implementar esse algoritmo, pois não deseja fazer tudo isso em sua mente quando estiver escrevendo seus envios Java super competitivos para os desafios do código-golfe.
Nota: Fiz alguns pequenos ajustes no algoritmo. Você precisa usar o especificado abaixo.
O algoritmo
Você começa com uma sequência de entrada arbitrária e aplica as seguintes operações a ela:
- Remova todos os apóstrofos
`'
- Divida o resultado em palavras, dividindo em
- caracteres que não são alfanuméricos e nem um dígito
[^a-zA-Z0-9]
- Letras maiúsculas cercadas por letras minúsculas nos dois lados.
abcDefGhI jk
por exemplo, produzabc Def Ghi jk
- caracteres que não são alfanuméricos e nem um dígito
- Minúsculas cada palavra.
- Coloque em maiúscula o primeiro caractere de todas, exceto a primeira palavra.
- Junte todas as palavras novamente.
Notas Adicionais
- A entrada conterá apenas ASCII imprimível.
- Se um dígito é a primeira letra de uma palavra, deixe-o como está e não capalize outra coisa nessa palavra.
- A entrada sempre terá pelo menos um caractere.
Regras
- Função ou programa completo permitido.
- Regras padrão para entrada / saída.
- Aplicam-se brechas padrão .
- Isso é código-golfe , portanto, a menor contagem de bytes vence. O desempate é uma submissão anterior.
Casos de teste
"Programação de quebra-cabeças e código de golfe" -> "programmingPuzzlesCodeGolf" "Solicitação HTTP XML" -> "xmlHttpRequest" "suporta IPv6 no iOS?" -> "suportaIpv6OnIos" "SomeThing w1th, apo'strophe and 'punc] tuation" -> "someThingW1thApostrophesAndPuncTuation" "nada de especial" -> "nada de especial" "5pecial ca5e" -> "5pecialCa5e" "1337" -> "1337" "1337-spEAk" -> "1337Speak" "o que é uma bagunça" -> "o que é que" "abcD" -> "abcd" "a" -> "a" "B" -> "b"
Feliz codificação!
snake_case
&PascalCase
snake_case
por causa de Python, é claro. FORTH também tem FORTHCASE
e APL hasunreadable in any case
ApostropheS
na saída.