gpt4 book ai didi

c# - 有没有办法在 string.contains() 方法中评估多个字符串?

转载 作者:太空宇宙 更新时间:2023-11-03 17:27:14 25 4
gpt4 key购买 nike

if (description.ToUpper().Contains("BOUGHT") || description.ToUpper().Contains("PURCHASE"))

上面的代码是我所拥有的,我想知道如果我有相同条件的更长的字符串列表,我将如何在不使代码太长的情况下做到这一点。也许是 lambda 表达式?

最佳答案

不,没有内置函数。不过自己写也不难:

string[] needles = new string[]{"BOUGHT", "PURCHASE"};
string haystack = description.ToUpperInvariant();
bool found = needles.Any(needle=> haystack.Contains(needle));

我只将 hackstack 转换为 upper 一次以提高性能。

或者,您可以使用 IndexOf(needle, StringComparison.OrdinalIgnoreCase)>=0:

string[] needles = new string[]{"BOUGHT", "PURCHASE"};
string haystack = description;
bool found = needles.Any(needle=> haystack.IndexOf(needle, StringComparison.OrdinalIgnoreCase)>=0);

你不应该在这里使用 ToUpper(),因为它使用了当前的文化。使用当前文化可能会导致某些计算机出现意外问题,例如 i 在使用土耳其文化时不会大写为 I

两边的 ToUpperInvariant() 可能仍然存在一些细微的问题,不区分大小写的比较可能会返回不同的结果,但这仅在大海捞针和针中都有不寻常的字符时才有意义。

关于c# - 有没有办法在 string.contains() 方法中评估多个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7889583/

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