Ruby: converte un numero intero in una stringa
Domanda
In Ruby, provare a stampare i singoli elementi di una stringa mi dà problemi.Invece di vedere ogni carattere, vedo invece i loro valori ASCII:
>> a = "0123"
=> "0123"
>> a[0]
=> 48
Ho cercato online ma non riesco a trovare alcun modo per ripristinare lo "0" originale.Sono un po' nuovo su Ruby e so che deve essere qualcosa di semplice ma non riesco proprio a trovarlo.
Soluzione
Oppure puoi convertire il numero intero nel suo valore in caratteri:
a[0].chr
Altri suggerimenti
Vuoi a[0,1] invece di a[0].
Credo che questo stia cambiando in Ruby 1.9 in modo tale che "asdf"[2] restituisce "d" anziché il codice carattere
Riassumere:
Questo comportamento scomparirà nella versione 1.9, in cui viene restituito il carattere stesso, ma nelle versioni precedenti, provare a fare riferimento a un singolo carattere di una stringa tramite la sua posizione di carattere restituirà il suo valore di carattere (quindi "ABC"[2] restituisce 67)
Esistono numerosi metodi che restituiscono un intervallo di caratteri da una stringa (vedere la documentazione di Ruby su String metodo delle fette) Tutti i seguenti restituiscono "C":
"ABC"[2,1]
"ABC"[2..2]
"ABC".slice(2,1)
Trovo che il selettore di gamma sia il più facile da leggere.Qualcuno può dire se è meno efficiente?
Questo è proprio il modo in cui [] e [,] vengono definiti per la classe String.
Dai un'occhiata a API di stringa.
L'operatore [,] restituisce una stringa, è un operatore di sottostringa, dove l'operatore [] restituisce il carattere che Ruby tratta come un numero quando lo stampa.
Penso each_char
O chars
descrive meglio ciò che desideri.
irb(main):001:0> a = "0123"
=> "0123"
irb(main):002:0> Array(a.each_char)
=> ["0", "1", "2", "3"]
irb(main):003:0> puts Array(a.each_char)
0
1
2
3
=> nil