Qual é a melhor abordagem para colocar letras maiúsculas em uma string?
javascript
string
capitalization
vsync
fonte
fonte
text-transform:capitalize;
.Respostas:
fonte
'CHECK THIS OUT'.capitalize(true) -> "Check This Out"
,.true
Parâmetro da mente .A implementação mais curta para colocar letras maiúsculas em uma string é a seguinte, usando as funções de seta do ES6:
Implementação compatível com ES5:
A regex corresponde basicamente à primeira letra de cada palavra dentro da sequência especificada e transforma apenas essa letra em maiúscula:
Para caracteres não ASCII, consulte esta solução
Essa regex corresponde à primeira letra e a todas as letras que não sejam espaços em branco precedidas por espaços em branco na cadeia especificada e transforma apenas essa letra em maiúscula:
Um grupo de não captura poderia ter sido usado aqui da seguinte maneira,
/(?:^|\s)\S/g
embora og
sinalizador em nosso regex não capture os subgrupos por design de qualquer maneira.Felicidades!
fonte
päijät-häme
tornaPäIjäT-HäMe
EisbäRen
é um resultado, por exemplo.Päijät-Häme
, mas pelo menos no espaço em branco do Chrome não inclui o traço (-), portanto, a segunda parte do nome não é maiúscula. Pode ser corrigido como/(^|\s|-)\S/g
.output: "Esta é a pior string de todos os tempos"
Atualizar:
Parece que esta solução substitui a minha: https://stackoverflow.com/a/7592235/104380
fonte
A resposta fornecida pelo vsync funciona desde que você não tenha letras acentuadas na string de entrada.
Eu não sei o motivo, mas aparentemente as
\b
correspondências in regexp também acentuam as letras (testadas no IE8 e no Chrome), portanto, uma string como"località"
seria incorretamente maiúscula convertida em"LocalitÀ"
(aà
letra fica maiúscula porque o regexp acha que é um limite de palavra)Uma função mais geral que também funciona com letras acentuadas é esta:
Você pode usá-lo assim:
fonte
" javascript".toCapitalize() -> " javascript"
Como todos lhe deram a resposta JavaScript solicitada, mostrarei a propriedade CSS
text-transform: capitalize
fará exatamente isso.Sei que isso pode não ser o que você está pedindo - você não nos forneceu nenhum contexto em que está executando isso - mas se for apenas para apresentação, eu definitivamente aceitaria a alternativa CSS.
fonte
John Resig (da fama do jQuery) portou um script perl, escrito por John Gruber, para JavaScript. Esse script usa letras maiúsculas de uma maneira mais inteligente, não usa letras minúsculas como 'of' e 'and' por exemplo.
Você pode encontrá-lo aqui: Título em maiúsculas em JavaScript
fonte
Usando JavaScript e html
Basicamente, você pode fazer
string.capitalize()
e ele irá capitalizar cada primeira letra de cada palavra.Fonte: http://www.mediacollege.com/internet/javascript/text/case-capitalize.html
fonte
if (object.capitalize) {...} else {String.prototype.capitalize = function()....}
onde objeto é do tipoString
. Então, é bem simples mesmo.A resposta de Ivo é boa, mas prefiro não corresponder
\w
porque não há necessidade de capitalizar 0-9 e AZ. Podemos ignorá-los e corresponder apenas a az.É a mesma saída, mas acho mais claro em termos de código de auto-documentação.
fonte
"Är Toaletten"
. Sua resposta, anos após o fornecimento de uma resposta muito boa, não contribui para a discussão./\b\w/g
também falha em letras que não estão em inglês. Nem todo mundo lida com caracteres unicode, e isso ajudará aqueles que querem não.Se você estiver usando lodash em seu aplicativo JavaScript, poderá usar _.capitalize :
fonte
Uma maneira concisa do ES6 de fazer isso pode ser algo assim.
Isso apenas maiúscula a primeira letra e não afeta o restante da caixa da frase.
fonte
Minha solução:
Exemplo:
fonte
'a áAA. bb . bbb .cc .d'.toCapital();
=>a Áaa. bb . Bbb .cc .d
Isso deve cobrir os casos de uso mais básicos.
Editar: Legibilidade aprimorada do mapeamento.
fonte
/\b\w/g
...Esta solução não utiliza regex, suporta caracteres acentuados e também é suportada por quase todos os navegadores.
Uso:
Resultado:
fonte
http://www.mediacollege.com/internet/javascript/text/case-capitalize.html é uma das muitas respostas disponíveis.
O Google pode ser tudo o que você precisa para esses problemas.
Uma abordagem ingênua seria dividir a string por espaços em branco, colocar em maiúscula a primeira letra de cada elemento da matriz resultante e juntá-la novamente. Isso deixa a capitalização existente em paz (por exemplo, o HTML permanece HTML e não se torna algo bobo como o Html). Se você não quer esse efeito, transforme a corda inteira em minúscula antes de dividi-la.
fonte
Esse código coloca em maiúscula as palavras após o ponto:
fonte
Eu gosto de ir com processo fácil. Primeiro, altere a string para Array para facilitar a iteração; depois, usando a função map, altere cada palavra como você deseja.
fonte
Jquery ou Javascipt não fornece um método interno para conseguir isso.
A transformação de teste CSS (transformação de texto: capitalizar;) realmente não capitaliza os dados da sequência, mas mostra uma renderização capitalizada na tela.
Se você está procurando uma maneira mais legítima de conseguir isso no nível de dados usando o vanillaJS comum, use esta solução =>
fonte
Usa isto:
fonte
Você pode usar o seguinte para colocar em maiúscula as palavras em uma sequência:
fonte
Também há locutus: https://locutus.io/php/strings/ucwords/, que define desta maneira:
fonte
Eu usaria regex para este fim:
fonte