【发布时间】:2020-07-31 11:49:16
【问题描述】:
我想实现一个 Haskell 函数 wordToken,它将一个单词字符串拆分为一个字符串列表,包括句号和逗号
例如"the man saw." 应该导致["the", "man","saw","."]
所以我所做的是检查 Char 是逗号还是句号,然后按原样添加。 然后,如果它是一个 Char ,然后是一个 Char ,则将它们都添加。 否则,如果它是一个字符,然后是一个空格,则添加它并继续到列表的其余部分。 但我不知道如何告诉它分开单词本身,或者当我将一个 char 添加到一个 char 时,那就是一个新字符串
wordToken []= " "
wordToken (x:y:z) | x==',' || x=='.' = " "(++)x:wordToken( y:z)
| x/='\n' && y/='\n'= " "(++)x(++)y(++)wordToken z
| x/='\n' && y=='\n'= " "(++)x:wordToken z
| otherwise = wordToken z
我也尝试使用 words 函数,只添加标点符号的一部分,但它给了我一个类型不匹配 wordToken (x:xs) | x=='.' || x==',' = 'x':wordToken xs |否则 =words (x:xs)
【问题讨论】:
-
你在 Haskell 中查找过正则表达式或解析吗?
-
不,我没有查过,但我会检查一下
-
wordToken []= " " wordToken (x:y:z) | x==',' || x=='.' = " "(++)x:wordToken(y:z) | x/='\n' && y/='\n'= ""(++)x(++)y(++)wordToken z | x/='\n' && y=='\n'= " "(++)x:wordToken z |否则 = wordToken z
-
请将您的尝试放在问题部分。注意它做了什么而不是你期望它做什么。
标签: string function haskell split char