拆分字符串逻辑错误

时间:2014-06-26 19:47:21

标签: haskell split tokenize

你好这个函数应该取一个String并返回一个在Char c分割的字符串列表。我应该定义一些辅助函数,但是目前用户必须初始化应该隐藏它们的args。

xs =输出列表,i = substr的起始索引,j = substr

的结束索引

例子:split" 123,456,789" ',' [] 0 0

应该产生[" 789"," 456"," 123"]

split s c xs i j =
        if j == length s
        then (subStr s i j) : xs
        else if head (drop j s) == c
        then split s c (subStr s i j : xs) (j + 1) (j + 1)
        else split s c xs i (j + 1)

subStr s i j = take j(drop i s)

当我使用以下args应用该函数时:split" 123,456,789" ',' [] 0 0

我得到了结果:[" 789"," 456,789"," 123"]

1 个答案:

答案 0 :(得分:0)

我已经在您的其他帖子中提到了这一点,但问题在于您的subStr功能。如果将其更改为subStr s i j = take (j-i) (drop i s),它应该可以正常工作。如果这就是你想要的一切,那太好了。但是使用takeWhile或者使用data.Text中的split可以更清楚,更轻松地编写它。

另外,请输入签名。 (虽然我很感激你这次定义了输入。)它们不仅使我们更容易提供帮助,而且你可以在解决问题的过程中解决自己的问题。