gpt4 book ai didi

c# - 如何从匹配关键字的现有列表中获取项目列表并忽略大小写(不区分大小写)?

转载 作者:太空宇宙 更新时间:2023-11-03 20:47:50 24 4
gpt4 key购买 nike

我在 Xamarin Forms 中有一个 SeachBar,以及显示现有城市列表建议的 ListView。我想获取与搜索关键字匹配的项目列表,无论它是大写还是小写。

为此,我有一个 List。我想从该列表中搜索项目并获取与搜索关键字匹配的项目的 List 忽略大小写。我有一个用于获取与关键字匹配的项目列表的代码。我只希望它包含与搜索关键字匹配的项目,忽略字母的大小写。

(请注意,这里我想返回匹配项目的 List 而不是 bool 是否存在匹配。所以请不要关闭这个问题或标记类似返回 bool 的那个。)

这是我的代码

List<string> allCities = new List<string> { "Mumbai", "Redmond", "Cambridge", "London", "Moscow", "New York", "Chicago"};

void SearchList()
{
string keyword = "mum";
var citiesSearched = allCities.Where(c => c.Contains(keyword));
ListView.ItemSource = citiesSearched;
}

我已经尝试使用 StringComparer.OrdinalIgnoreCaseStringComparison.OrdinalIgnoreCase 但我得到了 错误 No overload for Contains takes 2 arguments.

这是修改:

var citiesSearched = allCities.Where(c => c.Contains(keyword, StringComparer.OrdinalIgnoreCase));
// And
var citiesSearched = allCities.Where(c => c.Contains(keyword, StringComparison.OrdinalIgnoreCase));

在这两个语句中我都得到了错误。

最佳答案

没有接受 StringComparisonStringComparerString.Contains 重载,但您可以使用IndexOfStringComparison,如果未找到子字符串,则 IndexOf 返回 -1,或者子字符串在其中的索引否则较大的字符串。所以你可以使用:

var citiesSearched = allCities.Where(
c => c.IndexOf(SearchBar.Text, StringComparison.OrdinalIgnoreCase) != -1);

如果您希望它对特定的CultureInfo 具有文化敏感性,您可以使用CultureInfo.CompareInfo 来获取CompareInfo,然后CompareInfo.IndexOfCompareOptions.IgnoreCase 执行文化敏感且不区分大小写的搜索。

关于c# - 如何从匹配关键字的现有列表中获取项目列表并忽略大小写(不区分大小写)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59010323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com