none
Laço para deixar todas as strings com a primeira letra maiúsculas RRS feed

Respostas

  • Olá...

    using System.Globalization; TextInfo meuTI = new CultureInfo("pt-BR",false).TextInfo;

    meuTI.ToTitleCase('rOBERson nAves'));

    Globalization é sempre a solução mais indicada.

    Abraço !!


    Não esqueça de marcar o post como útil caso tenha te ajudado.

    quinta-feira, 23 de agosto de 2012 13:20
  • Faltou você atribuir este valor novamente no DataColumn, veja:

    System.Globalization.TextInfo t = new System.Globalization.TextInfo();
    
    foreach (DataRow row in dt.Rows)
    {
        row["NomeCampo"] = t.ToTitleCase(row["NomeCampo"].ToString());
    }


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    quinta-feira, 23 de agosto de 2012 14:13
  • Eu tinha postado um trecho do código errado, veja este código que fiz como exemplo:

    using System.Text.RegularExpressions;
    using System.Data;
    using System.Collections.Generic;
    using System;
    using System.IO;
    using System.Linq;
    using System.Xml.Linq;
    using System.Globalization;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            public static void Main(string[] args)
            {
                //Simulnando retorno de dados
                DataTable dt = new DataTable();
                dt.Columns.Add("nmrazao", typeof(string));
    
                for (int i = 0; i < 10; i++)
                    dt.Rows.Add(string.Format("aBcB{0}kikU uuuYY{0}", i));
    
                System.Globalization.TextInfo t = new CultureInfo("pt-BR", false).TextInfo;
    
                //Mostrando dados antes do tratamento
                foreach (DataRow row in dt.Rows)
                    Console.WriteLine(row["nmrazao"].ToString());
    
                //Tratando informações
                foreach (DataRow row in dt.Rows)
                    row["nmrazao"] = t.ToTitleCase(row["nmrazao"].ToString());
    
                //Linhas em branco para separar resultado
                Console.WriteLine();
                Console.WriteLine();
    
                //Mostrando dados apos otratamento
                foreach (DataRow row in dt.Rows)
                    Console.WriteLine(row["nmrazao"].ToString());
    
                Console.Read();
            }
        }
    }
    

    Resultado:

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    quinta-feira, 23 de agosto de 2012 14:50

Todas as Respostas

  • Tente usar o método ToTileCase() contido no namespace System.Globalization, exemplo:

    string myString = "wAr aNd pEaCe";
    
    myString = myTI.ToTitleCase(myString);

    Referencia:
    http://msdn.microsoft.com/pt-br/library/system.globalization.textinfo.totitlecase.aspx

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/


    • Editado Vitor Mendes quinta-feira, 23 de agosto de 2012 13:16
    • Sugerido como Resposta Roberson Naves quinta-feira, 23 de agosto de 2012 13:20
    quinta-feira, 23 de agosto de 2012 13:13
  • Olá...

    using System.Globalization; TextInfo meuTI = new CultureInfo("pt-BR",false).TextInfo;

    meuTI.ToTitleCase('rOBERson nAves'));

    Globalization é sempre a solução mais indicada.

    Abraço !!


    Não esqueça de marcar o post como útil caso tenha te ajudado.

    quinta-feira, 23 de agosto de 2012 13:20
  • Agradeço pela atenção em me responder, mas é o seguinte, Estou lendo arquvios .SQL

    jogando-os para uma listbox e usando o texto deles que é o próprio comando "INSERT INTO...."

    e tenho um botao LimpaDados que ele tira os caracteres "%20,%1B0" etc...  que estão em um laço FOR, tem como eu jogar neles?

    Também tenho método TratarDados, que insiro os dados lidos da tabela do BD e jogo o valor na string, posso fazer isso uma por uma? (são só 4 tabelas, não dará muito trabalho...)

    Agradeço a atenção novamente =)

    quinta-feira, 23 de agosto de 2012 13:38
  • Agradeço pela atenção em me responder, mas é o seguinte, Estou lendo arquvios .SQL

    jogando-os para uma listbox e usando o texto deles que é o próprio comando "INSERT INTO...."

    e tenho um botao LimpaDados que ele tira os caracteres "%20,%1B0" etc...  que estão em um laço FOR, tem como eu jogar neles?

    Também tenho método TratarDados, que insiro os dados lidos da tabela do BD e jogo o valor na string, posso fazer isso uma por uma? (são só 4 tabelas, não dará muito trabalho...)

    Agradeço a atenção novamente =)



    Ai cabe a você decidir/estudar a melhor solução a ser aplicada na sua aplicação, pelo que entendi dentro deste FOR você deveria tratar estar string que vão colocadas no ListBox:

    System.Globalization.TextInfo t = new System.Globalization.TextInfo();
    
    for (int i = 0; i < suaListaString.Count; i++)
    {
        suaListaString[i] = t.ToTitleCase(suaListaString[i].Replace("%20", "").Replace("%1B0", ""));
    }


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    quinta-feira, 23 de agosto de 2012 13:58
  • Agradeço pela atenção em me responder, mas é o seguinte, Estou lendo arquvios .SQL

    jogando-os para uma listbox e usando o texto deles que é o próprio comando "INSERT INTO...."

    e tenho um botao LimpaDados que ele tira os caracteres "%20,%1B0" etc...  que estão em um laço FOR, tem como eu jogar neles?

    Também tenho método TratarDados, que insiro os dados lidos da tabela do BD e jogo o valor na string, posso fazer isso uma por uma? (são só 4 tabelas, não dará muito trabalho...)

    Agradeço a atenção novamente =)



    Ai cabe a você decidir/estudar a melhor solução a ser aplicada na sua aplicação, pelo que entendi dentro deste FOR você deveria tratar estar string que vão colocadas no ListBox:

    System.Globalization.TextInfo t = new System.Globalization.TextInfo();
    
    for (int i = 0; i < suaListaString.Count; i++)
    {
        suaListaString[i] = t.ToTitleCase(suaListaString[i].Replace("%20", "").Replace("%1B0", ""));
    }


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    Fiz assim e não funcionou meu amigo

    foreach (DataRow row in dt.Rows) {

    nmrazao = row["NomeCampo"].ToString();

    nmrazao = t.ToTitleCase(nmrazao);

    }

    * Já fica a dica ai quem precisar ;x *

    nmrazao é uma string que eu criei para pegar o valor do campo da tabela do meu BD...

    Agradeço atenção. Sabe alguma forma de funcionar?

    Pois os nomes estão TODOS em maiúsculos nos arquivos .SQL

    então quando eu insiro eles no banco eles todos ficam em maiúsculos ;s


    quinta-feira, 23 de agosto de 2012 14:06
  • Faltou você atribuir este valor novamente no DataColumn, veja:

    System.Globalization.TextInfo t = new System.Globalization.TextInfo();
    
    foreach (DataRow row in dt.Rows)
    {
        row["NomeCampo"] = t.ToTitleCase(row["NomeCampo"].ToString());
    }


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    quinta-feira, 23 de agosto de 2012 14:13
  • Faltou você atribuir este valor novamente no DataColumn, veja:

    System.Globalization.TextInfo t = new System.Globalization.TextInfo();
    
    foreach (DataRow row in dt.Rows)
    {
        row["NomeCampo"] = t.ToTitleCase(row["NomeCampo"].ToString());
    }


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    Exatamente como você falou da erro diz q "System.Globalization.TextInfo" HAS NO CONSTRUCTOR

    System.Globalization.TextInfo t = new System.Globalization.TextInfo();
    
                foreach (DataRow row in dt.Rows)
                {
                    
       NomeCampo= row["nmrazao"].ToString();
       NomeCampo= t.ToTitleCase(row["nomeCampo"].ToString());
                 } 


    e assim nao acontece nada... ;\

    TextInfo t = new CultureInfo("pt-BR").TextInfo;
    
                foreach (DataRow row in dt.Rows)
                {
          nmrazao = row["nmrazao"].ToString();
          nmrazao = t.ToTitleCase(row["nmrazao"].ToString());
          nmrazao = t.ToTitleCase(nmrazao);
                }

    E também não deu sem a última linha "nmrazao = t.ToTitleCase(nmrazao);

    Não sei se o fato de eu querer INSERIR estas informações dentro da tabela no meu banco de dados tem alguma coisa haver com isso... =\

    Nao sei oq fazer ;\\

    Obrigado pela atenção =)



    quinta-feira, 23 de agosto de 2012 14:29
  • Eu tinha postado um trecho do código errado, veja este código que fiz como exemplo:

    using System.Text.RegularExpressions;
    using System.Data;
    using System.Collections.Generic;
    using System;
    using System.IO;
    using System.Linq;
    using System.Xml.Linq;
    using System.Globalization;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            public static void Main(string[] args)
            {
                //Simulnando retorno de dados
                DataTable dt = new DataTable();
                dt.Columns.Add("nmrazao", typeof(string));
    
                for (int i = 0; i < 10; i++)
                    dt.Rows.Add(string.Format("aBcB{0}kikU uuuYY{0}", i));
    
                System.Globalization.TextInfo t = new CultureInfo("pt-BR", false).TextInfo;
    
                //Mostrando dados antes do tratamento
                foreach (DataRow row in dt.Rows)
                    Console.WriteLine(row["nmrazao"].ToString());
    
                //Tratando informações
                foreach (DataRow row in dt.Rows)
                    row["nmrazao"] = t.ToTitleCase(row["nmrazao"].ToString());
    
                //Linhas em branco para separar resultado
                Console.WriteLine();
                Console.WriteLine();
    
                //Mostrando dados apos otratamento
                foreach (DataRow row in dt.Rows)
                    Console.WriteLine(row["nmrazao"].ToString());
    
                Console.Read();
            }
        }
    }
    

    Resultado:

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    quinta-feira, 23 de agosto de 2012 14:50
  • Já marquei como uteis as respostas de vocês dois...

    O problema era aquilo que eu havia falado, a string já está TODA em maiúscula, só precisei dar um string.ToLower(); e depois fazer o que vocês falaram...

    Agora preciso fazer outra coisa que acho que precisarei fazer de outra maneira oque vocês acabaram de me ensinar...

    Preciso por as preposições "de,para,do, da" em minúsculas, exemplo:

    jose da silva dos santos <--Tem que ficar--> Jose da Silva dos Santos

    =s 

    Any Help ~'?

    quinta-feira, 23 de agosto de 2012 14:58
  • Já marquei como uteis as respostas de vocês dois...

    O problema era aquilo que eu havia falado, a string já está TODA em maiúscula, só precisei dar um string.ToLower(); e depois fazer o que vocês falaram...

    Agora preciso fazer outra coisa que acho que precisarei fazer de outra maneira oque vocês acabaram de me ensinar...

    Preciso por as preposições "de,para,do, da" em minúsculas, exemplo:

    jose da silva dos santos <--Tem que ficar--> Jose da Silva dos Santos

    =s 

    Any Help ~'?

    PlayHardGoPro as soluções postado acima como você pode testar só deixam a primeira letra em maisculo de cada palavra. A solução para seu caso acima seria você criar seu algoritimo usando do método Split para quebrar esta string (pode usar o "espaço" no spli para quebrar a string) e validar palavra por palavra.

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    terça-feira, 28 de agosto de 2012 12:43
  • Já marquei como uteis as respostas de vocês dois...

    O problema era aquilo que eu havia falado, a string já está TODA em maiúscula, só precisei dar um string.ToLower(); e depois fazer o que vocês falaram...

    Agora preciso fazer outra coisa que acho que precisarei fazer de outra maneira oque vocês acabaram de me ensinar...

    Preciso por as preposições "de,para,do, da" em minúsculas, exemplo:

    jose da silva dos santos <--Tem que ficar--> Jose da Silva dos Santos

    =s 

    Any Help ~'?

    PlayHardGoPro as soluções postado acima como você pode testar só deixam a primeira letra em maisculo de cada palavra. A solução para seu caso acima seria você criar seu algoritimo usando do método Split para quebrar esta string (pode usar o "espaço" no spli para quebrar a string) e validar palavra por palavra.

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    Obrigado por me responder...

    Mas tem um método WAAAAY EASIER !! 

    Só invokar System.Globalization e usar o método ToTitleCase() =)

    Thanks everyone !

    terça-feira, 28 de agosto de 2012 20:45