标签: case-insensitive

HashMap 中不区分大小写的搜索

我有一张地图:

static Map<String, String> = getMap(); //getting a map from a config file.
Run Code Online (Sandbox Code Playgroud)

现在,在这张地图中,我需要使用 KEYS 执行不区分大小写的搜索。我没有将值放入映射中,不是通过 put 函数,但您可以将其视为以键值格式存储在数据库中的值,并将其作为映射检索。我需要进行案例不敏感搜索。

经过研究,使用TreeMap可以解决问题,但效率不高 --> O(log n)

或者覆盖HashMap的get()方法,创建我自己的HashMap。但这将包括覆盖许多方法,而且我不想要这么多,它不是非常重要的代码的一部分。

现在我正在将这些值以小写形式存储在数据库中并进行检查。但这使得数据库中容易出错且不可读。

是否可以有更简单的方法来做到这一点?

java dictionary hashmap hashcode case-insensitive

0
推荐指数
1
解决办法
2096
查看次数

如何在 C++ 中实现与 unicode 无关的不区分大小写的比较

我有一个要求,其中我的 C++ 代码需要进行不区分大小写的比较,而不必担心字符串是否已编码,或者所涉及的编码类型。该字符串可以是 ASCII 或非 ASCII,我只需要按原样存储它并将其与第二个字符串进行比较,而无需考虑是否设置了正确的语言环境等等。

用例:假设我的应用程序接收一个字符串(假设它是一个文件名)最初为“Zoë Saldaña.txt”,并按原样存储它。随后,它接收另一个字符串“zoë saLdañA.txt”,并且通过使用一些 API,该字符串与第一个字符串之间的比较应该会导致匹配。与文件名“abc.txt”和“AbC.txt”相同。

我阅读了 IBM 的 ICU 以及它默认如何使用 UTF-16 编码。我很想知道:

  1. 如果 ICU 提供了一种通过无缝处理字符串来解决我的需求的方法,而不管它们的编码类型如何?

  2. 如果 1. 的答案是否定的,那么,使用 ICU 的 API,将所有字符串(ASCII 和非 ASCII)规范化为 UTF-16,然后进行不区分大小写的比较和其他操作是否安全?

  3. 是否有替代方案可以促进这一点?

我读了这篇文章,但它不太符合我的要求。

谢谢!

c++ string unicode case-insensitive icu

0
推荐指数
1
解决办法
1544
查看次数

删除区分大小写的停用词

我正在预处理文本并想删除德语中的常见停用词。使用以下代码 [final_wordlist 作为示例数据] 几乎可以正常工作:

from nltk.corpus import stopwords

final_wordlist =['Status', 'laufende', 'Projekte', 'bei', 'Stand', 'Ende', 'diese', 'Bei']
stopwords_ger = stopwords.words('german')
filtered_words = [w for w in final_wordlist if w not in stopwords_ger]
print(filtered_words)
Run Code Online (Sandbox Code Playgroud)

这产生:

['Status', 'laufende', 'Projekte', 'Stand', 'Ende', 'Bei']
Run Code Online (Sandbox Code Playgroud)

但是正如您所看到的,大写的 'Bei' 没有被删除(应该如此),因为来自 nltk 的停用词都是小写的。有没有一种简单的方法可以不区分大小写地删除所有停用词?

python case-insensitive nltk stop-words

0
推荐指数
1
解决办法
2036
查看次数

不区分大小写 [Linq.Enumerable]::SequenceEqual()

例如,我一直[Linq.Enumerable]::SequenceEqual()用来比较两个数组中项目的顺序

$validOrder = @('one', 'two', 'three')
$provided = @('one', 'two', 'three')
[Linq.Enumerable]::SequenceEqual($validOrder, $provided)
Run Code Online (Sandbox Code Playgroud)

这有效,但现在我意识到我想独立解决大写错误,所以我想以不区分大小写的方式测试订单。我发现记录了一个不同的方法签名,IEqualityComparer<T>作为第三个值。这确实看起来是正确的方向,但我还没有找到任何可以帮助我在 powershell 中实现它的东西。我尝试只使用 'OrdinalIgnoreCase' 作为最后一个参数,[String].FindIndex()正如另一个线程中指出的那样。但可惜不是这里。我还发现实际上为不同的对象类型制作了一个自定义比较器,但似乎我刚刚手动实现了我真正想要的东西,我不确定使用的价值是什么[Linq.Enumerable]::SequenceEqual(),我可以将我的数组传递给我的类方法并直接在那里完成工作。

如果 (-not (Compare-Object -SyncWindow 0 $validOrder $provided)) { $result = 'ordered' } else { $result = 'disordered' } 并且它已经不区分大小写,我也使这种方法有效。但它也更慢,我可能有很多这样的测试要做,所以速度会有好处。

最后,我看到这似乎有效,并且非常简单,不区分大小写(如果我愿意)并且看起来很快。数组中的项目总数总是很小,不同数组的重复次数是性能问题。

$result = ($provided -join ' ') -eq ($validOrder -join ' ')
Run Code Online (Sandbox Code Playgroud)

那么,最后一个选项是否可行,或者我是否遗漏了一些明显反对它的内容?

另外,我觉得我还会IEqualityComparer<T>遇到其他有用的论点,因此知道如何去做会很有用。假设我读对了,并IEqualityComparer<T>提供了一种不同形式的比较机制,而不仅仅是滚动我自己的比较。

linq powershell case-insensitive

0
推荐指数
1
解决办法
105
查看次数

为什么十六进制在Java中不区分大小写?

如果Java是区分大小写的语言,那么为什么十六进制值不区分大小写?

int x = 0x21af3;
int y = 0X21AF3;

System.out.println(x==y);
Run Code Online (Sandbox Code Playgroud)

它返回true.任何人都可以解释为什么十六进制不区分大小写?

java hex case-sensitive case-insensitive

-1
推荐指数
1
解决办法
1490
查看次数

为什么 C 关键字区分大小写?

C 关键字由 C 编译器预定义,在 C89 中为小写。既然只有 32 个,为什么不能将它们定义为不区分大小写?

c case-insensitive

-2
推荐指数
1
解决办法
4851
查看次数

字符串不区分大小写

我现在有这个(以及更多),并希望这样做,如果有人从数组中输入非大写的东西(它当前都是大写),那么他们仍然可以订购它.

if(food.equals(array[0])) {
    System.out.println("Here is your " + food + ".");
}
Run Code Online (Sandbox Code Playgroud)

java string comparison case-insensitive

-3
推荐指数
1
解决办法
1434
查看次数