In Ruby 1.9.3 (e probabilmente versioni precedenti, non sono sicuro), sto cercando di capire perché il metodo di spaccatura # String di Ruby mi sta dando determinati risultati. I risultati che ottengo sembrano contro-intuitivi da quello che mi aspetterei. Ecco un esempio:Stringa di lunghezza zero restituita dalla stringa n. Divisa
"abcabc".split("b") #=> ["a", "ca", "c"]
"abcabc".split("a") #=> ["", "bc", "bc"]
"abcabc".split("c") #=> ["ab", "ab"]
Qui, il primo esempio restituisce esattamente ciò che mi aspetterei.
Ma nel secondo esempio, sono confuso sul motivo per cui #split restituisce una stringa di lunghezza zero come primo valore dell'array restituito. Qual è il ragionamento per questo? Questo è quello che mi aspetterei invece:
"abcabc".split("a") #=> ["bc", "bc"]
E lungo quella stessa linea, come mai non c'è finale stringa di lunghezza zero restituito nel terzo esempio? Se il secondo esempio restituisce una stringa di lunghezza zero come primo valore, l'ultimo esempio dovrebbe restituire lo stesso del suo ultimo valore.
Mi illumini, cosa mi manca qui ??
EDIT: Guardando più in esso, mi rendo conto perché questo è il comportamento di default e perché il mio pensiero è completamente sbagliato. Se dovessimo passare attraverso un file CSV ad esempio, dividendo su ogni colonna, i nostri dati verrebbero eliminati perché le colonne guida vuote verrebbero ignorate.
Inoltre, è importante notare che questa domanda non è correlata solo a Ruby - Sto imparando che molte altre lingue si comportano nello stesso modo. Stavo semplicemente usando Ruby quando ho saputo di questo.
Non è consigliabile dividere CSV su virgole. Ti darà risultati negativi su qualsiasi stringa quotata con una virgola incorporata. Invece, usa il modulo CSV incorporato di Ruby, che farà la cosa giusta. –
@ the tin man: Capito, stavo solo parlando in generalità. Grazie! – Threeve