【发布时间】:2018-05-01 19:45:03
【问题描述】:
我需要测试一个字符串,看看它是否以任何字符串数组结尾。
我通过关注this answer 找到了使用 LINQ 的完美解决方案:
string test = "foo+";
string[] operators = { "+", "-", "*", "/" };
bool result = operators.Any(x => test.EndsWith(x));
现在我想获取匹配的字符串,这就是我目前遇到的问题。
我尝试在末尾添加
text_field.Text = x;
并且错误地显示了有关范围的消息 - 理所当然地,我期待这个错误。我还尝试在最顶部声明一个名为x 的字符串变量,结果出现了另一个错误——无法在不同的范围内重新声明变量。我想我已经习惯了 PHP,你可以毫无问题地重新声明一个变量。
【问题讨论】:
-
Any()返回一个布尔值,如果你真的想要一些东西,可以试试FirstOrDefault()。请记住,尽管您可以匹配多个项目,但您打算如何处理其余项目?你关心?是否应该任意返回第一个匹配项? -
您是否要在整个字符串的末尾加上 +?
-
@SimonPrice 是的,但前提是它与
operators数组之一匹配。 -
正则表达式是正确的答案,但我的也是。归结为您的偏好
-
@maccettura 在我的情况下,我只希望得到 1 项匹配或根本没有匹配项。不应该有任何情况下它会匹配 2 个或更多
operators。