Strings – Como Manipular – C#

Já sabemos que podemos utilizar variáveis do tipo String em nossos aplicativos.

 

Um dos usos mais comuns deste tipo de objeto é quando manipulamos um texto para exibir ao usuário baseado em dados informados por ele. Podemos mostrar uma mensagem de saudação com o nome do usuário quando ele se autenticar no aplicativo, por exemplo.

 

Veremos neste artigo algumas operações básicas de como manipular Strings, ou seja, como podemos “brincar” com texto dentro de nossos sistemas, seja para mostrar uma mensagem para o usuário, seja para gravar um log, etc…

 

Criando Uma Nova String

 

Os objetos do tipo String podem ser criados de várias formas.

 

Podemos fazer uma atribuição simples ou usar uma sobrecarga (overload) para criar uma nova string usando um número de parâmetros diferentes.

 

using System;

namespace CriandoString
{
    public static class Program
    {
        static void Main()
        {
            string stringTeste01 = "Um exemplo de string criado por atribuição.";
            string stringTeste02 = new string('N', 50); //neste exemplo criamos uma string com 50 caracteres N

            Console.WriteLine(stringTeste01);
            Console.WriteLine(stringTeste02);
        }
    }
}

 

Ou podemos utilizar um dos vários métodos que criam novas Strings combinando várias outras Strings, Arrays ou Objetos. Alguns exemplos destes métodos são: String.Format, String.Concat, String.Join, String.Insert, String.CopyTo…

 

Veja abaixo um exemplo utilizando o String.Format para exibir uma mensagem com a data do sistema (DateTime.Now):

 

using System;

namespace CriandoString
{
    public static class Program
    {
        static void Main()
        {
            string stringTeste01 = String.Format("Bom dia! Hoje é {0:dd/MM/yyyy}.", DateTime.Now);

            Console.WriteLine(stringTeste01);
        }
    }
}

 

Cortando E Removendo Caracteres

 

Existem algumas situações em que precisaremos “cortar” ou remover alguns caracteres. Podemos fazer este tipo de operação utilizando os métodos abaixo.

 

Trim

 

O método Trim remove os espaços em branco no início e no final do conteúdo da String.

 

using System;

namespace ExemploTrim
{
    public static class Program
    {
        static void Main()
        {
            string stringTeste = "    TEXTO    ";
            Console.WriteLine(stringTeste);

            string stringTesteTrim = stringTeste.Trim();
            Console.WriteLine(stringTesteTrim);
        }
    }
}

 

TrimStart  e TrimEnd

 

Os métodos TrimStart e TrimEnd removem os espaços em branco no início ou no final (respectivamente) do conteúdo da String.

 

using System;

namespace ExemploTrimStartEnd
{
    public static class Program
    {
        static void Main()
        {
            string stringTeste = "    TEXTO    ";
            
            Console.WriteLine(stringTeste);
            Console.WriteLine(stringTeste.TrimStart());
            Console.WriteLine(stringTeste.TrimEnd());
        }
    }
}

 

Remove

 

O método Remove, como o nome já diz, remove um determinado número de caracteres a partir de uma posição especificada.

 

 

Preenchendo Strings

 

Já tive que criar programas que “montavam” arquivos do tipo texto para integração de informações com outros sistemas. Alguns destes sistemas utilizavam arquivo texto posicional, ou seja, todas as linhas do arquivo deveriam ter o mesmo tamanho.

 

Por isso, precisava formatar os campos dentro deste arquivo para que cada campo dele ficasse com o mesmo comprimento.

 

using System;

namespace ExemploRemove
{
    public static class Program
    {
        static void Main()
        {
            string stringTeste = "TEXTO TEXTO TEXTO REMOVER TEXTO TEXTO TEXTO TEXTO";

            Console.WriteLine(stringTeste);
            Console.WriteLine(stringTeste.Remove(17, 8));
        }
    }
}

 

PadLeft

 

O método PadLeft cria um novo String “juntando” caracteres de preenchimento à esquerda até que o comprimento atinja o total especificado.

 

No exemplo do arquivo texto que citei acima, o campo de código (que era inteiro) deveria possuir 17 posições. Para formatar o registro de código 200, precisaria completar o restante com zeros: 00000000000000200.

 

Ao invés de compor a string com algo do tipo “00000000000000000”, utilizei o método PadLeft para preencher a string com zeros a esquerda. Veja um exemplo abaixo.

 

using System;

namespace ExemploPadLeft
{
    public static class Program
    {
        static void Main()
        {
            string stringTeste = "200";

            Console.WriteLine(stringTeste);
            Console.WriteLine(stringTeste.PadLeft(17, '0'));
        }
    }
}

 

PadRight

 

Já o método PadRight cria uma nova String concatenando os caracteres de preenchimento à direita da string original até o comprimento desejado.

 

Voltando ao arquivo texto, um outro campo deveria mostrar a descrição do um evento com 200 posições e espaços a direita. Veja um exemplo abaixo.

 

using System;

namespace ExemploPadRight
{
    public static class Program
    {
        static void Main()
        {
            string stringTeste = "Descrição do evento";

            Console.WriteLine(stringTeste);
            Console.WriteLine(stringTeste.PadRight(20, ' '));
        }
    }
}

 

Comparando Strings

 

Outra situação bem comum é comparar textos, sejam elas vindas do usuário, da base de dados ou de outro sistema.

 

Para nos auxiliar nesta tarefa, existem vários métodos de comparação na biblioteca .NET:

 

Compare Compara duas strings
CompareOrdinal Compara duas strings sem considerar configurações regionais
CompareTo Compara a string atual com outra string
StartsWith Verifica se a String começa com outra string passada como parâmetro
EndsWith Verifica se a String termina com outra string passada como parâmetro
Equals Verifica se duas Strings são iguais
IndexOf Retorna a posição da String onde se encontra outra string passda como parâmetro, começando do início dela
LastIndexOf Retorna a posição da String onde se encontra outra string passda como parâmetro, começando do final dela

 

using System;

namespace ExemploComparandoStrings
{
    public static class Program
    {
        static void Main()
        {
            string string01 = "Primeiro Texto";
            string string02 = "Segundo Texto";

            Console.WriteLine(String.Compare(string01, string02));
            Console.WriteLine(String.CompareOrdinal(string01, string02));
            Console.WriteLine(string01.CompareTo(string02));
            Console.WriteLine(string01.Equals(string02));
            Console.WriteLine(string01.StartsWith("P"));
            Console.WriteLine(string01.EndsWith("O"));
            Console.WriteLine(string01.IndexOf("i"));
            Console.WriteLine(string01.LastIndexOf("i"));
        }
    }
}

 

Alterando Maiúsculas E Minúsculas Numa String

 

Quando você compara duas strings as letras minúsculas e maiúsculas são tratadas como diferentes, a não ser que você determine explicitamente que isso seja ignorado.

 

Por conta disso, temos disponíveis alguns métodos de alteração de maiúsculas/minúsculas.

 

ToUpper

 

O método ToUpper altera todos os caracteres de uma String para maiúsculas.

 

Veja um exemplo abaixo:

 

using System;

namespace ExemploToUpper
{
    public static class Program
    {
        static void Main()
        {
            string string01 = "primeiro texto";

            Console.WriteLine(string01.ToUpper());
        }
    }
}

 

ToLower

 

O método ToLower altera todos os caracteres de uma String para minúsculas.

 

Veja um exemplo abaixo:

 

using System;

namespace ExemploToLower
{
    public static class Program
    {
        static void Main()
        {
            string string01 = "PRIMEIRO TEXTO";

            Console.WriteLine(string01.ToLower());
        }
    }
}

 

ToTitleCase

 

O método ToTitleCase converte o primeiro caractere de cada palavra em maiúscula e o restante em minúsculas.

 

As palavras que estiverem totalmente em maiúsculas são consideradas acrônimos e não serão convertidas.

 

Este método fica no namespace System.Globalization e leva em consideração a cultura, ou seja, precisamos primeiro recuperar o objeto TextInfo que representa as convenções de uma determinada cultura.

 

No exemplo abaixo a cultura utilizada é a que está configurada na máquina onde o código está sendo executado, que é chamada através do CultureInfo.CurrentCulture:

 

using System;
using System.Globalization;

namespace ExemploToTitleCase
{
    public static class Program
    {
        static void Main()
        {
            string[] valores = { "esta operação não tem IOF", "esta operação não tem iMPOSTo", "O Retorno de Jedi"};
            TextInfo teste = CultureInfo.CurrentCulture.TextInfo;

            foreach (var valor in valores)
                Console.WriteLine("{0} --> {1}", valor, teste.ToTitleCase(valor));
        }
    }
}

 

Usando A Classe StringBuilder

 

Quando manipulamos muito uma String (para formatar um texto para um arquivo de carga, por exemplo) podemos ter problemas de performance. Por este motivo temos o objeto StringBuilder, que está no namespace System.Text e foi projetado para este fim.

 

Para vermos um pouco como este objeto funciona, escrevi um artigo somente para isso que você pode conferir aqui: StringBuilder: Como Utilizar.

 

Se cadastre no Grupo VIP App Dev para ser avisado quando os próximos artigos da série forem publicados.

Comece pelo e-book GRATUITO

5 Passos Para Desenvolver Alexa Skills

Se você não sabe por onde começar, este e-book te mostra os passos para ser um desenvolvedor de skills de sucesso.
100% livre de spam.

Para enviar seu comentário, preencha os campos abaixo:

Deixe uma resposta

*

Seja o primeiro a comentar!