我知道函数:
numbers xs = filter (\x -> x `elem` [0..9]) xs
示例:numbers "123Text321"-〉123321我不想过滤掉String中的所有整数,只想过滤掉第一个集合("123")。如果一个函数只从它看到的字符串中获取第一个整数,并且一旦它到达一个字符串,它就返回它找到的整数,那么它需要什么呢?再举一个例子:numbers "b123w321"-〉应返回123。
numbers "123Text321"
123321
"123"
numbers "b123w321"
123
oxiaedzo1#
您可以将takeWhile与isDigit结合使用:
takeWhile
isDigit
import Data.List(takeWhile) import Data.Char(isDigit) numbers = takeWhile isDigit
您的尝试没有成功,因为filter根据其定义遍历了整个列表,并且不知道遍历的进度(它不会告诉我们在看到非数字后应该停止)。另一个问题是,整数在Haskell中不是字符,所以应该查找'0'..'9'而不是0..9。
filter
'0'..'9'
0..9
1条答案
按热度按时间oxiaedzo1#
您可以将
takeWhile
与isDigit
结合使用:您的尝试没有成功,因为
filter
根据其定义遍历了整个列表,并且不知道遍历的进度(它不会告诉我们在看到非数字后应该停止)。另一个问题是,整数在Haskell中不是字符,所以应该查找
'0'..'9'
而不是0..9
。