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

  • Modus Recordings

    Modus Record

    26 Kasım 2008
  • Ralph Phillips

    Ralph Philli

    5 Aralık 2006
  • wwjoshdo

    wwjoshdo

    25 Mayıs 2009