Oppure

Loading
15/02/13 11:18
megadeth
Salve a tutti, sono entrato da poco nel mondo .NET e avrei necessità, partendo da una stringa nota, di ottenerne una con i caratteri scambiati a due a due. Inoltre, se il numero dei caratteri è dispari, nell'ultimo scambio vorrei poter inserire un valore scelto da me.
Ho dato uno sguardo ai metodi del tipo String ma non ho trovato nulla di simile.

Esempio:

Stringa di partenza con caratteri pari: CIAO
Stringa finale invertita: ICOA

Stringa di partenza con caratteri dispari: HELLO
Stringa finale invertita con valore finale scelto X: EHLLXO

Grazie anticipatamente!
aaa
15/02/13 12:17
HeDo

questo è un tipico esercizio scolastico, è ovvio che non ci sia un metodo già pronto e anche se ci fosse non ti permetterebbero di usarlo.
cosa esattamente non ti è chiaro nella consegna?
aaa
15/02/13 12:30
megadeth
Non è un esercizio scolastico, anche perchè la scuola l'ho finita da un pezzo.
Questo tipo di esercizi li facevo in C quando andavo a scuola e utilizzavo i puntatori.
Il mio dubbio adesso riguarda il fatto che sto migrando al .NET e non so ancora bene come manipolare le stringhe.
Avevo pensato di utilizzare la classe stringbuilder per costruire la stringa di destinazione ma sono in dubbio su come prelevare i singoli caratteri dalla stringa di partenza.
aaa
15/02/13 13:39
Poggi Marco
Utilizza la stringa ( o StringBuilder ) come se fosse un vettore.
aaa
15/02/13 14:26
megadeth
Ok, credo di esserci riuscito!

Dim p As Char()
Dim parola As String = txtparola.text
Dim i As Byte = 1
Dim invertito As New StringBuilder
n = parola.ToCharArray
        Do While i <= parola.Length
            If i = parola.Length Then
                invertito.Append("X")
            Else
                invertito.Append(n(i))
            End If
            invertito.Append(n(i - 1))
            i = i + 2
        Loop
MessageBox.Show(invertito.ToString)


:D
aaa
15/02/13 15:47
GrG
Ho creato questa funzione ricorsiva piuttosto compatta, mi pare funzioni correttamente, se non ti è chiaro qualcosa chiedi pure :k:

    Private Function Inverti(ByVal str As String)
        If (str <> "") Then
            If (str.Length = 1) Then
                Return "X" & str
            End If
            Return str.Substring(1, 1) & str.Substring(0, 1) & Inverti(str.Substring(2, str.Length - 2))
        End If
    End Function
aaa
16/02/13 13:35
megadeth
Si, è perfetta anche la tua funzione e ti ringrazio per averla postata ;)
aaa