haskell - 如何将列名转换为 Haskell 中的列索引
问题描述
Excel 列名称类似于 A、B、C ... AA、AB、AC 直到无限。如何将列名转换为 Haskell 中的列索引。我可以将索引转换为列,但无法实现反向功能。有人可以解释一下如何编写它的反向函数吗?列索引:
f n = (concatMap sequence $ tail $ iterate (['A'..'Z'] :) []) !! n
解决方案
Excel 列只是 Base26 中的数字,数字为 AZ。
使用readInt
从Numeric
.
xlColumnToNumberR :: ReadS Int
xlColumnToNumberR = readInt 26 -- There are 26 letters
isAlpha -- From 'Data.Char'
xlValue
where xlValue c = ord (toUpper c) - ord 'A' + 1
xlColumnToNumber :: String -> Maybe Int
xlColumnToNumber n = case xlColumnToNumberR n of
[(x, "")] -> Just x
_ -> Nothing
推荐阅读
- react-native - React Navigation 中的动态路由
- python - 用完成的多个循环替换 for 循环中的部分字符串
- python - 剥离一些标签并重命名它们
- spring-boot - Spring boot微服务中连接Pivotal Coud Cache集群所需的配置或链接
- php - Laravel 6 Eloquent 模型序列化忽略访问器
- javafx - 我可以从 ObservableList 中的 POJO 类中添加所需的值吗
? - excel - 如何将 23 年 0 个月转换为数值,以便在预测建模中使用它
- python - PermissionError: [Errno 13] Permission denied: 'ffmpeg' Open AI GYM
- jestjs - “路由器”类型上不存在属性“navigateByData”
- bash - 重命名目录中的文件以在破折号前后插入空格