在数组中查找字符串的一部分

本文关键字:一部分 字符串 查找 数组 | 更新日期: 2023-09-27 18:18:18

我正在寻找一种有效的方法来查找某些单词,我会使用开关/大小写,整数/字符串吗?IndexOf('!'(;foreach 循环/包含?

我有一个从客户端接收的字符串。 所以,假设我得到:

string x = "fjdswordslkjf?dkHEYw";

我有一个与该消息对应的可能值数组。(这些在语法上都不正确,只是为了让你得到一个想法(:

someArray[0]= "?";
someArray[1]= "HEY";
someArray[2]= "find.me";

基本上我想知道

 if (x contains someWordinSomeArray)

我想使用数组中的单词搜索字符串 x。 在 C# 中执行此操作的最有效方法是什么? 我只需要一个布尔响应,而不是字符串中的确切位置。

这是我使用的:

foreach (string searchstring in valuesArray)
        {
            indx = test.IndexOf(searchstring);
            if (indx > -1)
            {
                testValue = true;
                break;
            }             
        }

在数组中查找字符串的一部分

遍历数组,并在找到匹配项后立即退出:

bool found = someArray.Any(s => x.Contains(s));

非 LINQ 版本为:

bool found = false;
foreach (string s in someArray) {
  if (x.Contains(s)) {
    found = true;
    break; // exit from loop
  }
}
您可以根据需要

使用适当的扩展方法。假设输入字符串存储在 s 中,并且要检查的单词数组是 wordsToMatch 。然后:

。如果您想知道是否有任何单词匹配:

var stringMatched = wordsToMatch.Any(w => s.Contains(w));
// true or false

。如果您想知道哪些单词匹配:

var matchingWords = wordsToMatch.Where(w => s.Contains(w));
// ["apple", "ban", "banana", "nana", "coconut", "nut", ...]

。如果您想知道每个单词是否匹配:

var wordMatchResult = wordsToMatch.Select(w => s.Contains(w));
// [true, true, false, true, false, true, ...]

.NET 框架有一个 string.contains 方法,可以执行您想要执行的操作。 循环遍历数组。对于数组中的每个项目,检查 x.Contains(item( 是否为 true

http://msdn.microsoft.com/en-us/library/dy85x1sa.aspx

string s1 = "fjdswordslkjf?dkHEYw";
foreach (String s in array)
    b = s1.Contains(Array[item]);  //will be T or F
    bool CheckForString(string[] someArray,string x)
    {          
      foreach(string s in someArray)
        if(x.contains(s))
          return true;
      return false;
    }  

我认为"包含"比 indexOf(( 更快