首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Haskell中拆分字符串?

如何在Haskell中拆分字符串?
EN

Stack Overflow用户
提问于 2011-02-12 22:26:26
回答 13查看 153.3K关注 0票数 187

在Haskell中有拆分字符串的标准方法吗?

lineswords在空格或换行符上的拆分效果很好,但肯定有一种标准的逗号拆分方式?

我在胡格尔上找不到它。

具体地说,我正在寻找split "," "my,comma,separated,list"返回["my","comma","separated","list"]的内容。

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2011-02-12 23:05:07

为此,有一个名为split的包。

cabal install split

像这样使用它:

ghci> import Data.List.Split
ghci> splitOn "," "my,comma,separated,list"
["my","comma","separated","list"]

它附带了许多其他函数,用于在匹配分隔符或具有多个分隔符时进行拆分。

票数 152
EN

Stack Overflow用户

发布于 2011-02-13 07:18:23

请记住,您可以查看前置函数的定义!

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

看这里,words的定义是,

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

因此,将其更改为接受谓词的函数:

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

然后用你想要的任何谓词来调用它!

main = print $ wordsWhen (==',') "break,this,string,at,commas"
票数 183
EN

Stack Overflow用户

发布于 2012-12-11 13:10:24

如果您使用Data.Text,则会有splitOn:

http://hackage.haskell.org/packages/archive/text/0.11.2.0/doc/html/Data-Text.html#v:splitOn

这是在Haskell平台中构建的。

举个例子:

import qualified Data.Text as T
main = print $ T.splitOn (T.pack " ") (T.pack "this is a test")

或者:

{-# LANGUAGE OverloadedStrings #-}

import qualified Data.Text as T
main = print $ T.splitOn " " "this is a test"
票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4978578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档