我有这个Data.Text
"Check: Find max among: 70, 102, 271, 40"
如何从此文本中提取数字并对它们应用函数?
最佳答案
出于各种美学原因,我喜欢这种方法:
import qualified Data.Text as T
import Data.Text.Read
import Data.Either
import Data.Char
import Data.Text.IO as T
readNums :: T.Text -> [Int]
readNums =
map fst . -- 5. extract the parsed numbers
snd . partitionEithers . -- 4. collect only the valid numbers
map decimal . -- 3. parse each substring as an number
filter (not . T.null) . -- 2. filter out empty strings (not necessary)
T.split (not . isDigit) -- 1. split on non-digits
关于parsing - 如何解析文本并提取整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28506961/