LINUX.ORG.RU

Как на хаскеле разбить строку?

 ,


0

2

В общем, нужна операция, типа как в других языках, что-то вроде,

"Hello,How,Are,You,Today".split(",").join(".")
Пока нашел вот это решение
splitBy :: (a -> Bool) -> [a] -> [[a]]
splitBy _ [] = []
splitBy f list = first : splitBy f (dropWhile f rest) where
  (first, rest) = break f list
 
splitRegex :: Regex -> String -> [String]
 
joinWith :: [a] -> [[a]] -> [a]
joinWith d xs = concat $ List.intersperse d xs
-- "concat $ intersperse" can be replaced with "intercalate" from the Data.List in GHC 6.8 and later
 
putStrLn $ joinWith "." $ splitBy (== ',') $ "Hello,How,Are,You,Today"
 
-- using regular expression to split:
import Text.Regex
putStrLn $ joinWith "." $ splitRegex (mkRegex ",") $ "Hello,How,Are,You,Today"

Но, что-то, не особо мне нравится. Может что получше есть?



Последнее исправление: sadlinuxoid (всего исправлений: 1)
Ответ на: комментарий от sadlinuxoid

Вот теперь я не сомневаюсь, что это anonimous.

Kuzy ★★★
()
Ответ на: комментарий от Macil

Для представления текстовой информации в Х. можно использовать три различных типа данных: String, ByteString и Text.

ByteString лучше не использовать, потому что элементом ByteString является Char8, а не Char.

P.S. А поддержка юникода в GHC — хреновая.

Можно подробнее?

hateyoufeel ★★★★★
()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

ByteString лучше не использовать

Почему? В конце-концов *всё* что попадает в рантайм из вне, попадает исключительно в форме байтстрингов.

Можно подробнее?

Понадобилось мне как-то намедни беспалевно запилить поддержку UAX#31 в своей поделке... А обломись-ка... Она даже в парсере GHC не запилена.

Нормализация, опять же, отсутствует. Работа с UCD реализована на минимальном уровне.

Macil ★★★★★
()

Показано 15 сообщений из 50. Показать все.

Lol.

Если тебе нужен replace, так и пиши, а то ересь какую-то напростынил.

Virtuos86 ★★★★★
()

Но, что-то, не особо мне нравится. Может что получше есть?

Что тебе не нравится и что ты хочешь?

Waterlaz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.