有没有办法用Parsec
进行正确的大小写折叠(比方说我想要一个来自Data.Attoparsec.Text
的行为类似于stringCI
的解析器)。
在Text.Parsec.Token
中执行不区分大小写的解析的代码只使用char (toLower c) <|> char (toUpper c)
,但没有正确的大小写折叠。所以我很困惑这是否可能。
答案 0 :(得分:1)
Parsec没有此内置功能的任何功能,但您可以使用例如来自foldCase
包的case-insensitive和循环中的satisfy
。我不是Unicode专家,因此我不确定您需要采取哪些额外的预防措施来确保正确性。
如果您需要对区域设置敏感的转换,则foldCase
文档中建议使用text-icu包;它看起来非常全面。