Primeira letra em Maiúsculo no textbox

30/06/2014

0

Boa tarde, tenho este código que coloca a primeira letra de cada palavra em maiúsculo, quando se digita no text box, "joão da silva" ou "JOÃO DA SILVA", fica "João Da Silva", mas gostaria de que as preposições "de, da, do, das, dos..." ficassem em minúsculo, como fazer isso usando este código que já tenho e ter este resultado "João da Silva" ?

public string ConvMaiuscula(string Input)
        {
            System.Globalization.CultureInfo cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
            System.Globalization.TextInfo textInfo = cultureInfo.TextInfo;
            return textInfo.ToTitleCase(Input.ToLower());
        }


private void nomeTextBox_TextChanged(object sender, EventArgs e)
        {
            nomeTextBox.Text = ConvMaiuscula(nomeTextBox.Text).ToString();
            nomeTextBox.SelectionStart = nomeTextBox.Text.Length;
        }


*Windows Form C#.
Jair Souza

Jair Souza

Responder

Posts

30/06/2014

Rafael Souza

if (Input == "de" || Input == "da" || Input == "das" || Input == "dos")
{
System.Globalization.CultureInfo cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
System.Globalization.TextInfo textInfo = cultureInfo.TextInfo;
return textInfo.ToTitleCase(Input.ToLower());
}
else
{
return Input;
}
Responder

01/07/2014

Rafael Souza


Testei aqui e funcionou
Responder

01/07/2014

Jair Souza

Agora não estou na minha máquina, vou testar hoje á noite, muito obrigado pelo seu interesse em ajudar.
Responder

02/07/2014

Jair Souza

Bom dia,
Ajustei o código e ficou assim :

public string ConvMaiuscula(string Input)
        {
		if (Input == "de" || Input == "da" || Input == "do" || Input == "das" || Input == "dos")
		{
            System.Globalization.CultureInfo cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
            System.Globalization.TextInfo textInfo = cultureInfo.TextInfo;
            return textInfo.ToTitleCase(Input.ToLower());
        }
		else
	  {
		return Input;
	}

E chamando o método no textchanged do textbox :

	   private void nomeTextBox_TextChanged(object sender, EventArgs e)
        {
            nomeTextBox.Text = ConvMaiuscula(nomeTextBox.Text).ToString();
            nomeTextBox.SelectionStart = nomeTextBox.Text.Length;
        }



Quando digito “joão da silva” o resultado é “joão da silva”, não muda nada...

Se digitar no início do textbox “da” fica “Da”.

Se digitar “da de do ...” fica “Da de do”, a primeira letra da preposição fica em Maiúscula, mas nada mais...

Mas repetindo, o que preciso é que independente de como for digitado maiúscula, minúsculas ou misturado
Que fique a primeira letra de cada palavra em Maiúscula e as demais em minúsculas(São nomes de pessoas), mas somente as preposições “de, da, do, das, dos” fiquem sempre em minúscula...assim : “João da Silva de Linhares dos Santos”.

Será que tem como ?
Responder

02/07/2014

Rafael Souza

           String testo = "olá meu amido da devmedia, testa para ver se da certo";
           StringBuilder resposta = new StringBuilder();

            string[] beg = testo.Split(' ');

            foreach (string s in beg)
            {
                // Aqui você coloca as preposições
                if (!(s.Equals("de") ||
                    s.Equals("da") ||
                    s.Equals("do") ||
                    s.Equals("dos") ||
                    s.Equals("das")))
                {
                    System.Globalization.CultureInfo cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
                    System.Globalization.TextInfo textInfo = cultureInfo.TextInfo;
                    resposta.Append(textInfo.ToTitleCase(s.ToLower()));
                }
                else
                {
                    resposta.Append(s);
                }

                resposta.Append(" ");
            }

            resultado = Olá Meu Amido da Devmedia, Testa Para Ver Se da Certo



Espero ter ajudado.

Att,

Rafael Silva
Responder

03/07/2014

Jair Souza

Não consegui testar está dando este erro...note que este método preciso aplicar no evento textchanged do textbox :

[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20140703-204330.png[/img]
Responder

07/07/2014

Rafael Souza

Depois do foreach coloca:


return resposta();


Att,


Rafael Silva
Responder

07/07/2014

Jair Souza

Aqui ?

[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20140707-113033.png[/img]
Responder

07/07/2014

Rafael Souza

[img]http://arquivo.devmedia.com.br/forum/imagem/264793-20140707-120140.png[/img]
Responder

07/07/2014

Rafael Souza

Sendo que é :

return resposta.ToString();


Att,


Rafael Silva
Responder

07/07/2014

Jair Souza

Tu poderias explicar e comentar cada linha?

Algumas não entendi..., na realidade só entendi o if...
Responder

07/07/2014

Rafael Souza

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(LetraMaiuscula("teste de texto"));
            Console.Read();
        }

        public static string LetraMaiuscula(string texto)
        {
            //Sequência mutável de caracteres
            StringBuilder resposta = new StringBuilder();

            // Divide seu texto em partes e tranforma em um array
            string[] beg = texto.Split(' ');


            // Se for preposição retorna sem alteração, se não, retorna a palavra com a primeira letra maiúscula
            foreach (string s in beg)
            {
                // Aqui você coloca as preposições                
                if (!(s.Equals("de") ||
                    s.Equals("da") ||
                    s.Equals("do") ||
                    s.Equals("dos") ||
                    s.Equals("das")))
                {
                    // Seta a primeira letra maiúscula
                    System.Globalization.CultureInfo cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
                    System.Globalization.TextInfo textInfo = cultureInfo.TextInfo;
                    resposta.Append(textInfo.ToTitleCase(s.ToLower()));
                }
                else
                {
                    //retorna a preposição sem alteração
                    resposta.Append(s);
                }

                //retorna os respectivos espaçamentos
                resposta.Append(" ");
            }

            //retorna o texto alterado
            return resposta.ToString();
        }
    }
Responder

07/07/2014

Jair Souza

Este método preciso aplicar no evento textchanged do textbox, para que seja alterado o texto durante a digitação no textbox...pode ser ?
Responder

08/07/2014

Jair Souza

O método está assim :

public string convMaiuscula(string texto)
         {
            StringBuilder resposta = new StringBuilder();
 
            string[] beg = texto.Split(' ');
 
            foreach (string s in beg)
            {
                if (!(s.Equals("de") || s.Equals("da") || s.Equals("do") || s.Equals("dos") || s.Equals("das") || s.Equals("e")))
                {
                    System.Globalization.CultureInfo cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
                    System.Globalization.TextInfo textInfo = cultureInfo.TextInfo;
                    resposta.Append(textInfo.ToTitleCase(s.ToLower()));
                }
                else
                {
                    resposta.Append(s);
                }
                    resposta.Append(" ");
            }
            return resposta.ToString();
        }



E chamo no evento texchanged do textbox assim :

private void nomeTextBox_TextChanged_1(object sender, EventArgs e)
        {
            nomeTextBox.Text = convMaiuscula(nomeTextBox.Text).ToString();
            nomeTextBox.SelectionStart = nomeTextBox.Text.Length;
         }


E deu este erro :

[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20140708-075204.png[/img]

...não está fácil...
Responder

09/07/2014

Jair Souza

Tentei mais estas, e dá o mesmo erro...

private void nomeTextBox_TextChanged(object sender, EventArgs e)
        {
            nomeTextBox.Text = convMaiuscula(nomeTextBox.Text);
            nomeTextBox.SelectionStart = nomeTextBox.Text.Length;
         }


private void nomeTextBox_TextChanged(object sender, EventArgs e)
        {
            nomeTextBox.Text = nomeTextBox.Text.convMaiuscula();
            nomeTextBox.SelectionStart = nomeTextBox.Text.Length;
         }
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar