【问题标题】:split string logic error拆分字符串逻辑错误
【发布时间】:2014-06-26 19:47:21
【问题描述】:

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

xs = 输出列表,i = substr 的开始索引,j = substr 的结束索引

示例:拆分 "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)

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

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

【问题讨论】:

  • 好吧,如果你使用一个好的变量名会很好,我正在寻找它,只是越来越困惑。

标签: haskell split tokenize


【解决方案1】:

我已经在你的另一篇文章中提到了这一点,但问题在于你的 subStr 函数。如果您将其更改为subStr s i j = take (j-i) (drop i s),它应该可以工作。如果这就是你想要的,那就太好了。但是使用 takeWhile 或使用 data.Text 中的split 可以更清晰、更轻松地编写它。

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

【讨论】:

  • spanbreaktakeWhile 更有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多