尝试将字符串中的关键字以句子的形式进行匹配

  • 本文关键字:句子 字符串 关键字 c# .net
  • 更新时间 :
  • 英文 :


我尝试了两种不同的方法来搜索这个字符串并将其与Appendixkeywords字符串匹配。我尝试过使用Array.ExistsArray.IndexOf,但都找不到Appendix关键字。任何帮助都会很棒。

代码:

public static void Main()
{
var Appendixkeywords = new[]
{
"appendix h: biosimilars"
};

string source = "aaa bbb ccc ddd eee fff <a href="http://www.cnn.com">Appendix H: Biosimilars</a> gg hh ii jj";
string sourceb = "aaa bbb ccc ddd eee fff Appendix H: Biosimilars gg hh ii jj";

bool b = Array.Exists(Appendixkeywords, element => element == source.ToLower());

Console.WriteLine(b);

int pos = Array.IndexOf(Appendixkeywords, source.ToLower());

Console.WriteLine(pos);

int pos1 = Array.IndexOf(Appendixkeywords, sourceb.ToLower());

Console.WriteLine(pos1);
}

实际输出:

False
-1
-1

预期输出:

True
<some index other than -1>
<some index other than -1>

工作样品

https://dotnetfiddle.net/QIXFDn

我假设您要检查source字符串是否包含Appendixkeywords数组中指定的任何字符串。此外,我认为您希望实现不区分大小写的比较。

bool foundAnyAppendixWord = Appendixkeywords
.Any(word => source
.Contains(word, StringComparison.InvariantCultureIgnoreCase));

你可以(甚至应该(将其轻松地转化为可重复使用的方法

static bool ContainsAnySearchWord(string[] searchWords, string target)
{
return searchWords.Any(word => target
.Contains(word, StringComparison.InvariantCultureIgnoreCase));
}
// ...
bool foundAnyAppendixWord = ContainsAnySearchWord(Appendixkeywords, source);

.NET Framework(及更早版本(:

static bool ContainsAnySearchWord(string[] searchWords, string target)
{
return searchWords.Any(word => target.ToLower()
.Contains(word.ToLower()));
}

编辑

您还必须添加一个using System.Linq;:(

相关内容

最新更新