[Dúvida] Reverter valor de uma string

pcaldeira

Membro
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?
 
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:
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
 
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
Se me deres os equivalentes, dá-me também exemplos sff ;) é que sendo C# deve ter uma sintaxe à C.

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

string num = "OLA";
string num2 = ""
for (int i3 = 0; i3 <= (num.Length - 1); i3++)
{
num2 = num.Substring(i3,1) + num2;
}

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)).
 
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)).
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
 
Back
Topo