1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Dúvida] Reverter valor de uma string

Discussão em 'Programação' iniciada por pcaldeira, 17 de Setembro de 2006. (Respostas: 8; Visualizações: 1193)

  1. Boas,
    gostava de saber se em C# existe uma função equivalente à do VB StrReverse(string), ou seja, que me permitisse inverter o valor de uma string.
    Por exemplo, converter "abc" em "cba".

    Já tentei um conversor de VB para C# e parece que não há nenhum method para isso.
    Sendo assim, como poderei criar um que faça isso?
     
  2. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Nunca trabalhei em C#, e o que sei é de VB6.

    Já programaste em VB6?

    Se sim, tens aqui o código duma função em VB6 que eu fiz agora para ti :P :

    Código:
    Private Function Reverse(ToReverse As String) As String
        Dim i        As Integer
        Dim FinalStr As String
     
        If Not Len(ToReverse) < 1 Then
            For i = 1 To Len(ToReverse)
                FinalStr = Mid(ToReverse, i, 1) & FinalStr
            Next i
        End If
     
        Reverse = FinalStr
    End Function
    
    A teoria é, para inverteres uma string (OLA), fazes um ciclo de todos os caracteres da string - neste caso, OLA tem 3 caracteres.

    Pegas neles um a um da esquerda para a direita, e acrescenta-los à esquerda da string final. Isto é,
    "OLA" - string inicial
    "" - string final

    string final = primeiro caracter da string inicial ("O") & string final ("")
    string final = segundo caracter da string inicial ("L") & string final ("O")
    string final = terceiro caracter da string inicial ("A") & string final ("LO")

    string final = "ALO".

    Espero que esta explicação tenha sido suficiente. Se souberes, diz-me o equivalente para o For...Next e para a função Mid() em C# e eu tento recriar o código nessa língua ;)

    Cumps [[[[[[[[[[]]]]]]]]]]
    angelofwisdom

    edit - ja agora, não é um method, mas sim uma função ;)
     
    Última edição: 17 de Setembro de 2006
  3. Boas,
    vi agora a tua resposta. Vou tentar implementá-la em C# amanhã e, se não conseguir, digo-te então os equivalentes para o For...Next e para Mid().
    Obrigado
     
  4. Se eu integrar a função numa class (que é o que pretendo fazer) passa a ser um method, invocado através de class.method(parameters), certo? Corrijam-me se estiver errado, é que sou newbie na programação e ainda não domino bem o Object Oriented Programming.
     
  5. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    Se me deres os equivalentes, dá-me também exemplos sff ;) é que sendo C# deve ter uma sintaxe à C.

    Que eu saiba, não deixa de ser uma função, a menos que faças "resposta = class.method(parameters)". Aí seria method, mas não sei se se deve fazer class.reverse(string) :confused: penso que mantendo como uma função pública resulta (isto é, a função está na classe, mas não é preciso fazer "class.reverse". "Reverse" bastaria)... mas isto é falando em VB6...

    Cumps [[[[[[[[[[]]]]]]]]]]
    angelofwisdom
     
  6. souto

    souto To fold or to FOLD?

    podes usar uma função recursiva que recebe uma string como parâmetro.

    não sei como fazer em c# mas vou fazer em java. acho que é parecido

    Código:
    public static String revertString(String aString) {
    		
    	if (aString == null || aString.equals(""))
    		return "";
    	else return (revertString(aString.substring(1)) + aString.charAt(0));
    }
    usares ou nao o modificador static depende apenas do uso que queiras dar à função.

    cumprimentos.
     
  7. Obrigado a todos pela ajuda, mas bastou-me utilizar o algoritmo do angel of wisdom, aqui fica o código em C#:

    Em C# a syntax para a os ciclos for é for(declaração e inicialização da variável; situações em que o ciclo vai ser executado (neste caso, enquanto num.Length -1 for maior ou igual a i3); operação a executar após cada iteração (neste caso, incrementar i3 em 1)).
     
  8. Galbne_PT

    Galbne_PT Power Member

    Boas,

    Podes tb começar no fim na string e fazeres o for "andar para tras"

    for(i=length-1;i=0;i--)
    {
    result += str;
    }

    penso k resolta. :P
     
  9. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member


    Parece-me uma forma bem optimizada de fazer as coisas ;) Testa!
     

Partilhar esta Página