erlang - 如何在erlang中匹配子字符串忽略大小写
问题描述
如何通过忽略大写/小写的字符串在 ETS 表中找到?
此代码通过以 开头的字符串查找wo
:
ets:test_ms({"WORD"}, [{{"wo"++'_'}, [], ['$_']}])
但是,就像WORD
大写一样,什么都不返回。
谢谢!
解决方案
匹配规范中不支持不区分大小写的匹配(或通常在 Erlang 中匹配)。你基本上有三个选择。
生成所有案例
[{{"wo"++'_'}, [], ['$_']}, {{"wO"++'_'}, [], ['$_']}, {{"Wo"++'_'}, [], ['$_']}, {{"WO"++'_'}, [], ['$_']}]
使用保护表达式(对于更长的单词,因为组合的数量是 2^N)
[{{['$1','$2'|'_']}, [{'orelse',{'=:=','$1',$w},{'=:=','$1',$W}}, {'orelse',{'=:=','$2',$o},{'=:=','$2',$O}}], ['$_']}]
使用此键转换
ets
表中的数据string:casefold/1
并进行搜索。
推荐阅读
- spring - 未知的生命周期阶段“.qualitygate.wait=true”
- excel - 找到第一个“To Date”,选择“To Date”下的单元格,将值粘贴到前面的单元格中,然后转到下一个 To Date
- python - 在列表中查找并删除文本
- reactjs - 有没有办法在 WordPress Gutenberg 编辑器中添加新标签
- visual-studio - Visual Studio 2019 应用建议快捷方式
- nlp - DialogFlow 上的 Botium K-fold 交叉验证引发前置条件错误
- python - 使用 LDAP 和 python cx_Oracle 连接到数据库
- c# - 如何在 C# Azure 函数中获取队列消息的插入时间
- javascript - .php 文件中的 Javascript 的 Visual Studio 代码片段
- python - Python多处理:有效地只保存最好的运行