检查字符串是否包含C#中的字符串数组中的任何匹配的最快方法是什么?我可以用循环来做,但我认为这太慢了。C#检查字符串是否包含字符串数组中的任何匹配
回答
使用LINQ:
return array.Any(s => s.Equals(myString))
当然,你可能要采取的文化和情况考虑进去,但这是一般的想法。 此外,如果平等不是您所说的“匹配”,您可以随时使用您需要用于“匹配”的功能。
更何况:你还在循环 - 只是在幕后。 – Dinah 2010-11-16 04:13:04
如果“数组”不会改变(或者只是偶尔改变),并且您将有很多输入字符串用于测试,那么您可以从数组中构建一个HashSet<string>
。 HashSet<T>.Contains
是O(1)操作,而不是O(N)的循环。
但是,构建HashSet需要一些(少量)时间。如果数组会频繁变化,那么循环是唯一可行的方法。
我真的不能告诉你,如果这绝对是最快的方式,但是我也经常这样做的方法之一是:
这将检查如果字符串包含任何从数组中的字符串:
string[] myStrings = { "a", "b", "c" };
string checkThis = "abc";
if (myStrings.Any(checkThis.Contains))
{
MessageBox.Show("checkThis contains a string from string array myStrings.");
}
要检查是否字符串包含数组的所有字符串(元素),只需在if语句改变myStrings.Any
到myStrings.All
。
我不知道这是什么样的应用,但我经常需要使用:
if (myStrings.Any(checkThis.ToLowerInvariant().Contains))
所以,如果你检查,以查看用户的输入,都不会有问题,用户是否进入大写字母中的字符串,这可以通过使用ToLowerInvariant()很容易地反转。
希望这有助于!
这很好,但是如果你想以相反的方向执行检查呢......即检查该子串是否存在于数组的项目中 – 2014-05-15 07:41:33
这对我来说工作得很好:
string[] characters = new string[] { ".", ",", "'" };
bool contains = characters.Any(c => word.Contains(c));
在许多解决方案中,这是唯一一个在Where语句中工作的人在ASP.NET核心。 – VSG24 2016-05-09 17:55:25
- 1. 检查是否字符串包含任何字符串数组中的
- 2. 如何检查是否字符串包含字符串数组字符串
- 3. 检查一个字符串是否包含任何字符串数组元素
- 4. 如何检查字符串是否包含C#中的字符?
- 5. c# - 检查字符串是否包含字符和数字
- 6. 检查字符串是否与字符串数组中的任何字符串匹配?
- 7. 检查是否任何数组包含字符串 - strpos
- 8. 如何检查字符串是否包含任何数字
- 9. 检查一个字符串是否包含任何一组字符串?
- 10. 检查C#字节数组是否包含字符串
- 11. 检查一个字符串是否包含任何字符
- 12. 如何检查字符串是否包含数组中的所有字符串?
- 13. 如何检查字符串是否包含List/Array中的任何字符串
- 14. 检查字符串字符是否与数组值匹配
- 15. 检查字符串是否包含字(不是子字符串!)
- 16. 检查字符串是否包含字符集中的字符
- 17. C#如何检查一个字符串是否包含字符串数组中的任何元素?
- 18. 检查字符串中是否包含一组字符?
- 19. 检查字符串中是否包含字符和数字
- 20. 如何检查字符串数组是否包含特定的字符串?
- 21. 检查字符串是否包含数组中的所有字符串
- 22. 如何检查TextView是否包含数组中的字符串?
- 23. 如何检查数组是否包含Javascript中的字符串?
- 24. 检查字符串是否包含正则表达式匹配
- 25. PHP检查字符串是否包含数字和检查字符串长度
- 26. 如何检查一个字符串是否包含任何一些字符串
- 27. 如何检查是否字符串包含数字符号
- 28. 如何检查一个字符串是否包含JavaScript中的字符串数组的字符串
- 29. 检查字符串是否匹配url
- 30. 检查字符串包含字符串
为什么你认为这将是太慢?你测试过了吗?数据集的典型大小是多少?这样猜测是浪费时间。 – 2010-11-16 04:02:35
你能澄清输入和期望的结果吗? – 2010-11-16 04:05:17
它包含约60个项目,但在同一个事件中我有更多的代码。性能还行,但我只是想知道我是否可以优化它。 – david 2010-11-16 04:08:29