如果我有以下代码:
string x = "123";
string y = "abc";
if (stringVar.Contains(x))
{
return x;
}
else if (stringVar.Contains(y))
{
return y;
}
哪里
string stringVar = "123abc";
它会
return x;
然而
stringVar = "abc123";
也会
return x;
有没有一种方法可以使返回结果基于stringVar的顺序,而不是遵循if-else语句的预定义顺序?
我期望的结果是:
stringVar = "123abc";
...
return x;
而如果:
stringVar = "abc123";
...
return y;
编辑:
此示例是我当前问题的非常简化的示例,String.StartsWith()并不总是有效,因为我要查找的文本并不总是在stringVar的开头。另外,在我的实际问题中,单词之间没有明显的分隔符(即没有空格),也很难分割stringVar。
最佳答案
首先,我建议将这些项目存储在一个集合中,例如:
string[] words = {"123","abc"};
现在您可以使用
string.IndexOf
和LINQ:return words
.Where(stringVar.Contains)
.OrderBy(stringVar.IndexOf)
.FirstOrDefault();