Eu tenho uma string que contém palavras em uma mistura de caracteres maiúsculos e minúsculos.
Por exemplo: string myData = "a Simple string";
Preciso converter o primeiro caractere de cada palavra (separada por espaços) em maiúsculas. Então, eu quero o resultado como:string myData ="A Simple String";
Existe alguma maneira fácil de fazer isso? Não quero dividir a string e fazer a conversão (esse será meu último recurso). Além disso, é garantido que as strings estão em inglês.
Respostas:
MSDN: TextInfo.ToTitleCase
Certifique-se de incluir:
using System.Globalization
fonte
Actual result: "War And Peace"
.text = Regex.Replace(text, @"(?<!\S)\p{Ll}", m => m.Value.ToUpper());
, mas está longe de ser perfeito. Por exemplo, ele ainda não lida com aspas ou parênteses -"(one two three)"
->"(one Two Three)"
. Você pode fazer uma nova pergunta depois de descobrir exatamente o que deseja fazer com esses casos.Tente o seguinte:
Como já foi apontado, o uso de TextInfo.ToTitleCase pode não fornecer os resultados exatos que você deseja. Se você precisar de mais controle sobre a saída, poderá fazer algo assim:
E então use-o assim:
fonte
Mais uma variação. Com base em várias dicas aqui, reduzi-o a este método de extensão, que funciona muito bem para meus propósitos:
fonte
Pessoalmente, tentei o
TextInfo.ToTitleCase
método, mas não entendo por que ele não funciona quando todos os caracteres são maiúsculos.Embora eu goste da função util fornecida por Winston Smith , deixe-me fornecer a função que estou usando atualmente:
Jogando com algumas seqüências de testes :
Dando saída :
fonte
ToLower()
a string inteira, você prefere fazer tudo isso sozinho e chamar a mesma função em cada caractere individual? Não é apenas uma solução feia, está dando benefício zero e levaria até mais tempo do que a função interna.rest = words[i].Substring(1).ToLower();
Recentemente eu encontrei uma solução melhor.
Se o seu texto contiver todas as letras em maiúsculas, o TextInfo não o converterá em maiúsculas e minúsculas. Podemos corrigir isso usando a função minúscula dentro desta forma:
Agora isso converterá tudo o que entra no Propercase.
fonte
fonte
Se alguém estiver interessado na solução para o Compact Framework:
fonte
Aqui está a solução para esse problema ...
fonte
Use
ToLower()
primeiro, queCultureInfo.CurrentCulture.TextInfo.ToTitleCase
no resultado, para obter a saída correta.fonte
Eu precisava de uma maneira de lidar com todas as palavras em maiúsculas e gostei da solução de Ricky AH, mas dei um passo adiante para implementá-la como um método de extensão. Isso evita a etapa de ter que criar sua matriz de caracteres e, em seguida, chamar o ToArray explicitamente todas as vezes - para que você possa chamá-lo na string, assim:
uso:
código:
fonte
É melhor entender tentando seu próprio código ...
Consulte Mais informação
http://www.stupidcodes.com/2014/04/convert-string-to-uppercase-proper-case.html
1) Converter uma seqüência de caracteres em maiúsculas
2) Converter uma seqüência de caracteres em minúsculas
3) Converta uma String em TitleCase
fonte
Aqui está uma implementação, caractere por caractere. Deve funcionar com "(One Two Three)"
fonte
fonte
Você pode alterar diretamente o texto ou a string para a correta usando esse método simples, após verificar valores de string nulos ou vazios para eliminar erros:
fonte
Tente o seguinte:
Chame esse método no evento TextChanged do TextBox.
fonte
Eu usei as referências acima e a solução completa é: -
// Precisa de um resultado como "Infoa2z significa todas as informações"
// Também precisamos converter a string em minúsculas, caso contrário, ela não está funcionando corretamente.
http://www.infoa2z.com/asp.net/change-string-to-proper-case-in-an-asp.net-using-c#
fonte
É isso que eu uso e funciona na maioria dos casos, a menos que o usuário decida substituí-lo pressionando shift ou caps lock. Como nos teclados Android e iOS.
fonte
Para aqueles que procuram fazê-lo automaticamente com o pressionamento de tecla, eu o fiz com o seguinte código no vb.net em um controle de caixa de texto personalizado - obviamente você também pode fazê-lo com uma caixa de texto normal - mas eu gosto da possibilidade de adicionar código recorrente para controles específicos via controles personalizados, ele se adapta ao conceito de POO.
fonte
Funciona bem, mesmo com estojo de camelo: 'someText in YourPage'
fonte
Como método de extensão:
Uso:
Resultado:
Kebab Is Deliciou's ;d C...
fonte
Alternativa com referência a
Microsoft.VisualBasic
(também manipula cadeias de caracteres maiúsculas):fonte
Sem usar
TextInfo
:Ele percorre todas as letras de cada palavra, convertendo-as em maiúsculas, se for a primeira letra, caso contrário, convertendo-as em minúsculas.
fonte
Eu sei que essa é uma pergunta antiga, mas eu estava procurando a mesma coisa por C e descobri que seria possível publicá-la se alguém procurar por uma maneira em C:
fonte