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.

È stato utile?

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?

@Chris,

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top