は、この猫を肌には多くの方法があり、彼は非常にpithilyスキンを示した方法:ここでは特に迅速かつ汚い方法のためのヒントがあります。しかし、コメントにMicroVirusが指摘しているように、Haskellの文字列は本質的にリストなので、完全性のために、ライブラリなしでこれを行う方法があります。
我々は最初のString
を取り、そのfst
囲むスラッシュの後のString
の残りの部分があるタプルを返し、そのsnd
トークンは、囲むスラッシュまでであることtilSlash
を定義するとします
tilSlash :: String -> String -> (String, String)
tilSlash ('\\':ss) til = (ss, til)
tilSlash ('/':_) _ = error "unmatched"
tilSlash (s:ss) til = (rest, (s: endTil)) where
(rest, endTil) = tilSlash ss
説明のため:
:これを使用して
s = "/show\\ hello how are /dont\\ you /;dont\\ doing /;show\\"
>>> tilSlash (tail s) []
(" hello how are /dont\\ you /;dont\\ doing /;show\\","show")
、我々はparseSlashes
を定義することができますあなたの入力時に
parseSlashes :: String -> [String]
parseSlashes [] = []
parseSlashes ('/': ss) = tok: (parseSlashes rest) where
(rest, tok) = tilSlash ss []
parseSlashes ('\\': _) = error "unmatched"
parseSlashes (_: ss) = parseSlashes ss
:
>>> parseSlashes s
["show","dont",";dont",";show"]
文字列のリストなので、あなたが取得するまでのステップを組み合わせて、その後、一度問題を一段階に取り組むために、このようなtakeWhile' 'として、プレリュードでリスト機能を使用します溶液。または、Parsecを調べます。 – MicroVirus