[Haskell-cafe] How to split this string.

emacsray at gmail.com emacsray at gmail.com
Mon Jan 2 11:45:47 CET 2012


On Mon, Jan 02, 2012 at 12:44:23PM +0300, max wrote:
> I want to write a function whose behavior is as follows:
>
> foo "string1\nstring2\r\nstring3\nstring4" = ["string1",
> "string2\r\nstring3", "string4"]
>
> Note the sequence "\r\n", which is ignored. How can I do this?
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe

unixLines :: String -> [String]
unixLines xs = reverse . map reverse $ go xs "" []
  where
    go [] l ls = l:ls
    go ('\r':'\n':xs) l ls = go xs ('\n':'\r':l) ls
    go ('\n':xs) l ls = go xs "" (l:ls)
    go (x:xs) l ls = go xs (x:l) ls



More information about the Haskell-Cafe mailing list