Oltre alla risposta di Roberts.
In elisir puoi usare: String.split(string, "\n")
Guarda a Corda modulo.
Domanda
C'è un modo per dividere una corda bit caricata da un file sulle nuove linee? Ho qualcosa di simile:
A line of text
Additional line of text
And another line
E voglio un array come questo:
["A line of text",
"Additional line of text",
"And another line"]
Esiste una funzione per dividere il testo sulle nuove linee per produrre qualcosa di simile a questo array?
Grazie in anticipo.
Soluzione
Oltre alla risposta di Roberts.
In elisir puoi usare: String.split(string, "\n")
Guarda a Corda modulo.
Altri suggerimenti
Guarda a binary:split/2/3
nel modulo binario. Per esempio con binary:split(String, <<"\n">>)
.
If you simply split a string on \n
, there are some serious portability problems. This is because many systems use \n
, a few such as older macs use \r
and Windows uses \r\n
to delimit new lines.
The safer way to do it would be to use a regex to match any of the three above possibilities:String.split(str, ~r{(\r\n|\r|\n)}
.
Mentre Mark ha ragione sui problemi di portabilità, il regex che ha fornito ha un errore di battitura e di conseguenza non funziona \r\n
sequenze. Ecco una versione più semplice che gestisce tutti e 3 i casi:
iex(13)> String.split("foo\nbar", ~r/\R/)
["foo", "bar"]
iex(14)> String.split("foo\rbar", ~r/\R/)
["foo", "bar"]
iex(15)> String.split("foo\r\nbar", ~r/\R/)
["foo", "bar"]
Di recente mi imbatto in una situazione in cui La soluzione nell'altra mia risposta E fondamentalmente qualsiasi altra soluzione a seconda delle espressioni regolari era in alcune situazioni molto più lente rispetto a quella della divisione binaria, soprattutto quando limita la quantità di parti in cui la stringa viene divisa. Puoi vedere https://github.com/crowdhailer/server_sent_event.ex/pull/11 Per un'analisi più dettagliata e un punto di riferimento.
Puoi usare :binary.split/3
Anche quando si prendono di mira diversi tipi di caratteri di nuove righe:
iex(1)> "aaa\rbbb\nccc\r\nddd" |> :binary.split(["\r", "\n", "\r\n"], [:global])
["aaa", "bbb", "ccc", "ddd"]
Come puoi vedere nell'esempio sopra, la partita è avida e \r\n
ha la precedenza sopra la divisione di \r
Prima e poi \n
.