举个例子:
Foo : Bar
也可以查找为 FOO、foo、fOO 等?
不。如果您愿意,您应该小写/大写所有键。
redis 键区分大小写,我的解决方案是: 键-->Foo:Bar 关键字-->f
键(“[fF]*”) 或者 关键字-->foo
键(“[fF][oO][oO]*”) 你必须将普通字符串转换为这种格式 '[Ff][Oo]';
我为此写了一个方法:
public static String toIgnoreCasePattern(String str){
StringBuilder sb = new StringBuilder();
char []chars = str.toCharArray();
char upperCaseC;
for(char c : chars){
boolean isLowerCase = Character.isLowerCase(c);
upperCaseC = isLowerCase ? Character.toUpperCase(c) : c;
sb.append("[").append(c).append(upperCaseC).append("]");
}
return sb.toString();
}
希望这个回答可以帮助到你。
在 C# 中
public static String toIgnoreCasePattern(String str)
{
StringBuilder sb = new StringBuilder();
char[] chars = str.ToCharArray();
char upperCaseC;
foreach (var c in chars)
{
bool isLowerCase = char.IsLower(c);
upperCaseC = isLowerCase ? char.ToUpper(c) : c;
sb.Append("[").Append(c).Append(upperCaseC).Append("]");
}
return sb.ToString();
}
Python(继续示例)
def nocase(s):
key = ''
for c in s:
if c.isalpha():
key += f"[{c.upper()}{c.lower()}]"
else:
key += c
return key
# equivalent to
nocase = lambda s: ''.join([f"[{c.upper()}{c.lower()}]" if c.isalpha() else c for c in s])
这适用于混合通配符。
>>> print(nocase('test'))
[Tt][Ee][Ss][Tt]
>>> print(nocase('*Tester1*'))
*[Tt][Ee][Ss][Tt][Ee][Rr]1*
感谢最初的想法