Tenho uma sequência de texto (cerca de 5 a 6 palavras, principalmente) que preciso converter.
Atualmente, o texto se parece com:
THIS IS MY TEXT RIGHT NOW
Eu quero convertê-lo para:
This Is My Text Right Now
Posso percorrer minha coleção de strings, mas não tenho certeza de como proceder para realizar essa modificação de texto.
Provavelmente prefiro invocar ToTitleCase de CultureInfo ( System.Globalization ) do que Thread.CurrentThread ( System.Threading )
mas deve ser o mesmo que a solução jspcal
EDITAR
Na verdade, essas soluções não são as mesmas :
CurrentThread
--calls ->CultureInfo
!System.Threading.Thread.CurrentThread.CurrentCulture
System.Globalization.CultureInfo.CurrentCulture
Referências:
fonte
Existem algumas maneiras de converter o primeiro caractere de uma string em maiúsculas.
A primeira maneira é criar um método que simplesmente cobre o primeiro caractere e anexa o resto da string usando uma substring:
A segunda maneira (que é um pouco mais rápida) é dividir a string em uma matriz char e, em seguida, reconstruir a string:
fonte
Não testado, mas algo assim deve funcionar:
Essencialmente, ele diz "preformar uma correspondência de regex em todas as ocorrências de um caractere alfanumérico que segue outro caractere alfanumérico e, em seguida, substituí-lo por uma versão em minúsculas dele mesmo"
fonte
Se estiver usando em uma página da web, você também pode usar CSS:
style="text-transform:capitalize;"
fonte
ASP.NET
mostra que o OP está fazendo isso na WEB. É claro que essa não é a resposta da pergunta porque o OP exigiu a solução,C#
mas resolve o problema e pode ser uma solução alternativa. +1Ao construir grandes mesas, a velocidade é uma preocupação, então a segunda função de Jamie Dixon é a melhor, mas não funciona completamente como está ...
Ele falha em colocar todas as letras em minúsculas e só coloca a primeira letra da string em maiúscula, não a primeira letra de cada palavra na string ... a opção abaixo corrige os dois problemas:
Embora, neste ponto, se esta ainda seja a opção mais rápida seja incerto, a
Regex
solução fornecida por George Mauer pode ser mais rápida ... alguém que se preocupa o suficiente deve testá-la.fonte
Não sei se a solução abaixo é mais ou menos eficiente do que a resposta de jspcal, mas tenho quase certeza de que requer menos criação de objetos do que a de Jamie e George.
fonte
Além da primeira resposta, lembre-se de alterar o índice de início de seleção da string para o final da palavra ou você obterá a ordem inversa das letras na string.
fonte
Experimente esta técnica; Retorna o resultado desejado
E não se esqueça de usar
System.Globalization
.fonte
Uma das soluções possíveis em que você pode estar interessado. Percorrer uma matriz de caracteres da direita para a esquerda e vice-versa em um loop.
fonte
A resposta de jspcal como uma extensão de string.
Program.cs
StringExtensions.cs
fonte