如果我有以下代码:

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();

10-04 22:27