返回If-Else结果独立于If-Else Order?

Waq*_*qas 2 c# if-statement

如果我有以下代码:

string x = "123";
string y = "abc";

if (stringVar.Contains(x))
{
    return x;
}
else if (stringVar.Contains(y))
{
    return y;
}
Run Code Online (Sandbox Code Playgroud)

哪里

string stringVar = "123abc";
Run Code Online (Sandbox Code Playgroud)

它会

return x;
Run Code Online (Sandbox Code Playgroud)

然而

stringVar = "abc123";
Run Code Online (Sandbox Code Playgroud)

也会

return x;
Run Code Online (Sandbox Code Playgroud)

有没有一种方法,而不是遵循if-else语句的预定义顺序,我可以让返回结果基于stringVar的顺序?

我想要的结果是:

stringVar = "123abc";
...
return x;
Run Code Online (Sandbox Code Playgroud)

而如果:

stringVar = "abc123";
...
return y;
Run Code Online (Sandbox Code Playgroud)

编辑:

这个例子是我当前问题的一个非常简单的例子,String.StartsWith()并不总是有效,因为我正在寻找的文本并不总是在stringVar的开头.另外,在我的实际问题中,单词之间没有明显的分隔符(即没有空格)要么难以分割stringVar.

Tim*_*ter 8

首先,我建议将项目存储在集合中,例如:

string[] words = {"123","abc"};
Run Code Online (Sandbox Code Playgroud)

现在你可以使用string.IndexOf和LINQ:

return words
    .Where(stringVar.Contains)
    .OrderBy(stringVar.IndexOf)
    .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

  • @CodeNotFound:没有._"`String.StartsWith()`并不总是有效,因为我正在寻找的文本并不总是在`stringVar`"_ :)的开头 (2认同)