sexta-feira, 23 de julho de 2010

Função C# para Copiar uma Palavra de uma Frase usando StringBuilder


    Quando temos preocupação com o uso de memória em nossas aplicações o uso do tipo String não é recomendável, devemos usar a classe StringBuilder, porem ela não tem tantas funções como tem o a classe String.
    Uma função que eu senti falta foi para copiar uma palavra de uma frase, ou um trecho delimitado por isso criei a função abaixo:
// Copia as palavra na posição e seu separador
private StringBuilder Palavra(StringBuilder pacote, char separador, int posicao)
{
    StringBuilder retorno = new StringBuilder();           
    for (int i = 0, pos = 1; i < pacote.Length; i++)
    {          
        retorno.Append(pacote[i]);
        if (pacote[i] == separador)
                {
                    if (pos == posicao)
                    {
                        retorno.Remove(retorno.Length - 1, 1);
                        break;
                    }
                    else
                    {
                        retorno.Remove(0, retorno.Length);
                        pos++;
                    }
                }
            }
            return new StringBuilder().Append(retorno);
}

    Esta função possui três parâmetros :
        - pacote: é a frase que queremos pegar uma palavra;
        - separador: caracter utilizado para separar as palavras;
        - posicao: posição da palavra dentro da frase.

        Exemplo
        Temos a seguinte frase:
StringBuilder aux = new  StringBuilder("Santos campeão da Copa do Brasil de 2010");

        Para pegar a palavra "Santos" usaremos a função da seguinte forma
Palavra(aux,' ',1);