SORU
12 ŞUBAT 2011, CUMARTESİ


Nasıl Haskell bir dize bölmek için?

Haskell bir dize bölmek için standart bir yolu var mı?

lines words büyük boşluk veya yeni satır üzerinde çıtlama iş, ama kesinlikle bir virgül bölme için standart bir yolu var mı? Hoogle de fint değil mi?

Özel olmak, split "," "my,comma,separated,list" ["my","comma","separated","list"] döner nerede bir şey arıyorum

Teşekkürler.

CEVAP
12 ŞUBAT 2011, CUMARTESİ


Başlangıç fonksiyonlarının tanımına bakmak unutmayın!

http://www.haskell.org/onlinereport/standard-prelude.html

Orada, words tanımıdır

words   :: String -> [String]
words s =  case dropWhile Char.isSpace s of
                      "" -> []
                      s' -> w : words s''
                            where (w, s'') = break Char.isSpace s'

Yani, bir yüklem alır bir işlevi değiştirin:

wordsWhen     :: (Char -> Bool) -> String -> [String]
wordsWhen p s =  case dropWhile p s of
                      "" -> []
                      s' -> w : wordsWhen p s''
                            where (w, s'') = break p s'

Sonra ne istersen onu Ara!

main = print $ wordsWhen (==',') "break,this,string,at,commas"

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alan Fullmer

    Alan Fullmer

    3 EYLÜL 2010
  • Ciaran Blumenfeld

    Ciaran Blume

    20 NİSAN 2009
  • 趣味そうこ♪

    趣味そう

    3 Mart 2010