如何在erlang中匹配子字符串忽略大小写
Posted
技术标签:
【中文标题】如何在erlang中匹配子字符串忽略大小写【英文标题】:How match substring ignoring case in erlang 【发布时间】:2019-02-06 00:18:51 【问题描述】:如何通过忽略大小写的字符串在 ETS 表中找到?
此代码通过以wo
开头的字符串查找:
ets:test_ms("WORD", ["wo"++'_', [], ['$_']])
但是,就像WORD
是大写一样,什么都不返回。
谢谢!
【问题讨论】:
【参考方案1】:在匹配规范中不支持不区分大小写的匹配(或通常在 Erlang 中的匹配)。你基本上有三个选择。
生成所有案例
["wo"++'_', [], ['$_'], "wO"++'_', [], ['$_'], "Wo"++'_', [], ['$_'], "WO"++'_', [], ['$_']]
使用保护表达式(对于较长的单词,因为组合的数量是 2^N)
[['$1','$2'|'_'],
['orelse','=:=','$1',$w,'=:=','$1',$W,
'orelse','=:=','$2',$o,'=:=','$2',$O],
['$_']]
使用string:casefold/1
转换ets
表中的数据,并按此键搜索。
【讨论】:
感谢您的回复!这种方式是我想象的,但我认为还有另一种能够涵盖更多的通用案例。我认为对于这种情况,有必要使用关系数据库或其他类型的存储,而不是 ETS。以上是关于如何在erlang中匹配子字符串忽略大小写的主要内容,如果未能解决你的问题,请参考以下文章
Tailwind CSS justify-between 同时忽略子大小