你好这个函数应该取一个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"]
答案 0 :(得分:0)
我已经在您的其他帖子中提到了这一点,但问题在于您的subStr
功能。如果将其更改为subStr s i j = take (j-i) (drop i s)
,它应该可以正常工作。如果这就是你想要的一切,那太好了。但是使用takeWhile或者使用data.Text中的split
可以更清楚,更轻松地编写它。
另外,请输入签名。 (虽然我很感激你这次定义了输入。)它们不仅使我们更容易提供帮助,而且你可以在解决问题的过程中解决自己的问题。