【问题标题】:How does \n work in Char lists in haskell\n 如何在 haskell 的 Char 列表中工作
【发布时间】:2022-01-20 18:10:29
【问题描述】:

现在我有一个等于"...\n...\n..." 的字符串。在我的代码中,我想把它写成一个列表(比如['a','b','c']),但是这如何与\n一起工作?我检查了 ghci if string == ['.','.','.','.','.','.','.','.','.'] 并且它说不,所以有人知道我将如何将 \n 写在 Char 列表中,谢谢。

【问题讨论】:

  • 从未尝试过,但正如'\n' 我会想到的那样?
  • A StringChars 的列表,所以"...\n...\n..."['.','.','.','\n','.','.','.','\n','.','.','.'] 的值完全相同
  • ik,我只是不知道 '\n' 是正确的写法,谢谢。
  • @RobinZigmond 这两个符号\n 实际上代表一个与'w''%' 处于同等地位的字符并不是那么明显。这是我们老程序员认为理所当然的事情之一,因为很多语言都是这样做的,但对于经验较少的人来说,这是一件相当奇怪的事情。
  • @leftaroundabout 同意了,我并不打算让我的评论居高临下。 (再读一遍,我不明白如何合理地采取这种方式 - 但我向任何采取这种方式的人道歉,因为这完全是无意的。)

标签: list haskell


【解决方案1】:

StringCharacters 的列表,所以"foo"['f', 'o', 'o']完全相同

对于new line character '\n' [wiki],您可以转义它,因此您的字符串"...\n...\n..." 相当于:

['.', '.', '.', '\n', '.', '.', '.', '\n', '.', '.', '.']

这里'\n'是一个单个字符,而不是两个:它映射到一个ASCII字符,代码点0a作为十六进制值(10作为十进制值)。因此,编译器会看到 \n 并将其替换为单个字符。

因此,例如,您可以使用 filter ('\n' /=) some_string 进行过滤,以从 String 中过滤掉换行符。

【讨论】:

    猜你喜欢
    • 2018-12-12
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 2020-11-01
    • 1970-01-01
    相关资源
    最近更新 更多