从另一个给定的字符串中提取一个特定的单词

时间:2018-06-25 11:51:50

标签: c# string

我想知道C#中是否有一种方法可以从给定的String中提取特定的单词。例如,我的代码具有以下内容:

  1. string emblem = "tiger"
  2. string userEntered = "a12tdddgh22i333gs4444e99rt"

我需要一种方法来检查userEntered字符串中是否包含字符 t i g e r ,然后将其与emblem字符串值进行比较。在大多数情况下,userEntered字符串会被加扰,因此是否存在一种逻辑方法来比较提取的字符与emblem中的值?

任何输入将不胜感激。

2 个答案:

答案 0 :(得分:3)

您可以尝试 Linq 并具有副作用(我们在查询时会更改startIndex

string emblem = "tiger";
string userEntered = "a12tdddgh22i333gs4444e99rt";

int startIndex = -1;

bool found = emblem
  .All(c => (startIndex = userEntered.IndexOf(c, startIndex + 1)) >= 0);

我们应确保

    emblem中的
  1. 所有字符都在userEntered
  2. 如果c1中的字符emblem出现在 c2之前,则userEntered.IndexOf(c1) < userEntered.IndexOf(c2)

在上面的示例中,我们有found == true

  

a12 t dddgh22 i i 333 g s4444 e 99 r t < / p>

答案 1 :(得分:0)

public static bool containsString(string word, string input) 
{
    string pattern = Regex.Replace(word, ".", ".*$0");
    RegexOptions options = RegexOptions.Multiline;

    return Regex.Matches(input, pattern, options).Count > 0;
}

...

string input = @"a12tdddgh22i333gs4444e99rt";
string word = "tiger";

bool found = containsString(word, input);
Console.WriteLine($"found: {found}");