Existe uma função incorporada ao Java que capitaliza o primeiro caractere de cada palavra em uma String e não afeta as outras?
Exemplos:
jon skeet
->Jon Skeet
miles o'Brien
->Miles O'Brien
(B permanece em capital, isso exclui o caso do título)old mcdonald
->Old Mcdonald
*
* ( Old McDonald
seria encontrado também, mas não espero que seja TÃO inteligente.)
Uma rápida olhada na documentação das seqüências Java revela apenas toUpperCase()
e toLowerCase()
, é claro, que não fornece o comportamento desejado. Naturalmente, os resultados do Google são dominados por essas duas funções. Parece uma roda que já deve ter sido inventada, então não custa nada pedir para que eu possa usá-la no futuro.
old mcdonald
? Isso deveria se tornarOld McDonald
?Respostas:
WordUtils.capitalize(str)
(do apache commons-text )(Nota: se você precisar
"fOO BAr"
se tornar"Foo Bar"
, use-ocapitalizeFully(..)
)fonte
WordUtils.capitalizeFully(str)
é a solução.Se você estiver preocupado apenas com a primeira letra da primeira palavra em maiúscula:
fonte
line
ser nulo ou ter um comprimento de <2.O método a seguir converte todas as letras em maiúsculas / minúsculas, dependendo da sua posição perto de um espaço ou de outros caracteres especiais.
fonte
if(Character.isLetter(chars[i])) { if(!found) { chars[i] = Character.toUpperCase(chars[i]); } found = true; } else { found = false; }
.found
parapreviousCharIsLetter
.Tente desta maneira muito simples
exemplo givenString = "ram é bom garoto"
A saída será: Ram Is Good Boy
fonte
Eu escrevi uma classe pequena para colocar todas as palavras em maiúsculas em uma String.
Opcional
multiple delimiters
, cada um com seu comportamento (use letras maiúsculas antes, depois ou ambas, para lidar com casos comoO'Brian
);Opcional
Locale
;Não rompa com
Surrogate Pairs
.DEMONSTRAÇÃO AO VIVO
Resultado:
Nota: a primeira letra sempre será maiúscula (edite a fonte se você não quiser).
Compartilhe seus comentários e ajude-me a encontrar erros ou melhorar o código ...
Código:
fonte
fonte
Eu fiz uma solução em Java 8 que é IMHO mais legível.
O Gist para esta solução pode ser encontrado aqui: https://gist.github.com/Hylke1982/166a792313c5e2df9d31
fonte
Usar
org.apache.commons.lang.StringUtils
torna muito simples.fonte
StringUtils.capitalise(str)
está obsoleto. Veja: commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/…Com este código simples :
Resultado: Olá
fonte
Estou usando a seguinte função. Eu acho que é mais rápido no desempenho.
fonte
Do Java 9 ou superior
você pode usar
String::replaceAll
assim:Exemplo:
Saídas
fonte
Use o método Split para dividir sua sequência em palavras e, em seguida, use as funções incorporadas para colocar em maiúscula cada palavra e depois anexá-las.
Pseudo-código (ish)
No final, a string se parece com "A frase à qual você deseja aplicar maiúsculas"
fonte
Isso pode ser útil se você precisar capitalizar títulos. Coloca em maiúscula cada substring delimitado por
" "
, exceto para cadeias especificadas como"a"
ou"the"
. Ainda não o executei porque é tarde, deve ficar bem. Usa o Apache CommonsStringUtils.join()
em um ponto. Você pode substituí-lo por um loop simples, se desejar.fonte
fonte
fonte
Decidi adicionar mais uma solução para colocar maiúsculas em uma string:
Função:
Chamada de exemplo:
Resultado:
fonte
Usar:
fonte
Existem várias maneiras de converter a primeira letra da primeira palavra em maiúscula. Eu tenho uma ideia. É muito simples:
fonte
fonte
Aqui está uma função simples
fonte
Esta é apenas outra maneira de fazer isso:
fonte
Método reutilizável para o intiCap:
fonte
Aqui está a minha solução.
Encontrei este problema esta noite e decidi pesquisá-lo. Eu encontrei uma resposta de Neelam Singh que estava quase lá, então decidi corrigir o problema (quebrou as cordas vazias) e causei uma falha no sistema.
O método que você está procurando é nomeado
capString(String s)
abaixo. Acontece "São apenas 5 da manhã aqui" em "São apenas 5 da manhã aqui".O código é muito bem comentado, então aproveite.
fonte
1. Java 8 Streams
Exemplos:
Para
foo bAR
aFoo Bar
, substitua omap()
método com o seguinte:2.
String.replaceAll()
(Java 9 ou superior)Exemplos:
3. Texto do Apache Commons
Para titlecase:
Para detalhes, consulte este tutorial .
fonte
Para aqueles que usam o Velocity no seu MVC, você pode usar o
capitalizeFirstLetter()
método da classe StringUtils .fonte
fonte
fonte
Se você prefere goiaba ...
fonte
fonte
A maneira curta e precisa é a seguinte:
Funciona sem erros se você tentar alterar o valor do nome para os três valores. Sem erros.
fonte