我很难过。我想知道字符串的顺序顺序是否有任何组合可用。比如我要匹配的字符串是
string somevar = "rat";
然后如果另一个字符串包含“rat”,“at”,“ra”或“r”,“a”,“t”,它应该返回false。
我只能考虑为我可以手动找到的每个序列创造条件。但我相信可以轻松找到它。我看了Implement a function that prints all possible combinations of the characters in a string,但它没有做我想要的。
我很抱歉,如果这不是很清楚,但我想检查一下
的情况 if(somevar == "rat" || somevar == "at" || somevar == "ra" || somevar == "r" || somevar == "a" || somevar == "t")
{
\\do something
}
答案 0 :(得分:4)
如果包含单个字符串足够,则不需要检查所有子字符串:
bool containsAnyChar = somevar.Intersect("rat").Any();
这是有效的,因为字符串实现了IEnumerable<char>
(是一组字符)。
答案 1 :(得分:3)
您需要一种确定所有子串的方法
public static IEnumerable<string> GetAllSubStrings(string input, int length)
{
for (var i = 0; i < input.Length - length + 1; i++)
{
yield return input.Substring(i, length);
}
}
然后你可以创建一个包含所有组合的列表
string somevar = "rat";
List<string> subStrings = new List<string>();
for (int i = 0; i < somevar.Length; i++)
{
subStrings.AddRange(GetAllSubStrings(somevar, i + 1));
}
// subStrings = {"rat", "at", "ra", "r", "a", "t"}
并最终检查该列表中的其他字符串。
更新至您更新的问题:
//check "ra"
string testItem = "ra";
bool contains = subStrings.Any(x => testItem == x);
答案 2 :(得分:-1)
string somevar = "rat";
string anotherString = "rat is there";
bool result = somevar.ToCharArray().Any(ch => anotherString.Contains(ch));