我想知道C#中是否有一种方法可以从给定的String中提取特定的单词。例如,我的代码具有以下内容:
string emblem = "tiger"
string userEntered = "a12tdddgh22i333gs4444e99rt"
我需要一种方法来检查userEntered
字符串中是否包含字符 t , i , g , e , r ,然后将其与emblem
字符串值进行比较。在大多数情况下,userEntered
字符串会被加扰,因此是否存在一种逻辑方法来比较提取的字符与emblem
中的值?
任何输入将不胜感激。
答案 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
中的userEntered
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}");