Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET 2010] Invertire caratteri di una stringa a due a due
Forum - C# / VB.NET - [VB.NET 2010] Invertire caratteri di una stringa a due a due

Avatar
megadeth (Normal User)
Newbie


Messaggi: 19
Iscritto: 29/12/2010

Segnala al moderatore
Postato alle 12:18
Venerdì, 15/02/2013
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!

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 13:17
Venerdì, 15/02/2013

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?


Ingegnere Informatico
https://ldlagency.it
PM Quote
Avatar
megadeth (Normal User)
Newbie


Messaggi: 19
Iscritto: 29/12/2010

Segnala al moderatore
Postato alle 13:30
Venerdì, 15/02/2013
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.

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 950
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 14:39
Venerdì, 15/02/2013
Utilizza la stringa ( o StringBuilder ) come se fosse un vettore.


Nulla va più veloce della luce, quindi rilassati.
PM Quote
Avatar
megadeth (Normal User)
Newbie


Messaggi: 19
Iscritto: 29/12/2010

Segnala al moderatore
Postato alle 15:26
Venerdì, 15/02/2013
Ok, credo di esserci riuscito!

Codice sorgente - presumibilmente VB.NET

  1. Dim p As Char()
  2. Dim parola As String = txtparola.text
  3. Dim i As Byte = 1
  4. Dim invertito As New StringBuilder
  5. n = parola.ToCharArray
  6.         Do While i <= parola.Length
  7.             If i = parola.Length Then
  8.                 invertito.Append("X")
  9.             Else
  10.                 invertito.Append(n(i))
  11.             End If
  12.             invertito.Append(n(i - 1))
  13.             i = i + 2
  14.         Loop
  15. MessageBox.Show(invertito.ToString)



:D

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 16:47
Venerdì, 15/02/2013
Ho creato questa funzione ricorsiva piuttosto compatta, mi pare funzioni correttamente, se non ti è chiaro qualcosa chiedi pure :k:

Codice sorgente - presumibilmente VB.NET

  1. Private Function Inverti(ByVal str As String)
  2.         If (str <> "") Then
  3.             If (str.Length = 1) Then
  4.                 Return "X" & str
  5.             End If
  6.             Return str.Substring(1, 1) & str.Substring(0, 1) & Inverti(str.Substring(2, str.Length - 2))
  7.         End If
  8.     End Function



...
PM Quote
Avatar
megadeth (Normal User)
Newbie


Messaggi: 19
Iscritto: 29/12/2010

Segnala al moderatore
Postato alle 14:35
Sabato, 16/02/2013
Si, è perfetta anche la tua funzione e ti ringrazio per averla postata ;)

PM Quote