在 LINQ 中获取与 Any 匹配的字符串
Get string that matched with Any in LINQ
我需要测试一个字符串,看看它是否以字符串数组中的任何一个结尾。
我通过以下 this answer:
找到了使用 LINQ 的完美解决方案
string test = "foo+";
string[] operators = { "+", "-", "*", "/" };
bool result = operators.Any(x => test.EndsWith(x));
现在我想获取匹配的字符串,这就是我目前遇到的问题。
我试着在最后添加
text_field.Text = x;
并且出现关于范围的消息错误 - 理所当然,我期待该错误。我还尝试在最顶部声明一个名为 x
的字符串变量,并且出现了另一个错误 - 关于无法在不同范围内重新声明变量的问题。我想我已经习惯了 PHP,您可以毫无问题地重新声明一个变量。
我会为此使用正则表达式
string test = "foo+";
var match = Regex.Match(test, @".+([\+\-\*\])$").Groups[1].Value;
如果字符串不以 +-*/
结尾,match 将是 ""
你最好的选择是做一个 FirstOrDefault
然后检查它是否是 null/empty/etc 就好像它是你的布尔值一样。虽然这是一个非常基本的例子,但它应该能说明问题。你如何处理这个结果,如果它应该只是一个或多个,等等取决于你的情况。
static void Main()
{
string test = "foo+";
string[] operators = { "+", "-", "*", "/" };
bool result = operators.Any(x => test.EndsWith(x));
string actualResult = operators.FirstOrDefault(x => test.EndsWith(x));
if (result)
{
Console.WriteLine("Yay!");
}
if (!string.IsNullOrWhiteSpace(actualResult))
{
Console.WriteLine("Also Yay!");
}
}
如果我没理解错的话,这会让你成为接线员
string test = "foo+";
string[] operators = { "+", "-", "*", "/" };
var result = operators.Where(x => test.EndsWith(x)) ;
这只会 return 最后使用的运算符,所以如果它以 -+* 结尾,它会给你字符串中的最后一个字符
我需要测试一个字符串,看看它是否以字符串数组中的任何一个结尾。
我通过以下 this answer:
找到了使用 LINQ 的完美解决方案string test = "foo+";
string[] operators = { "+", "-", "*", "/" };
bool result = operators.Any(x => test.EndsWith(x));
现在我想获取匹配的字符串,这就是我目前遇到的问题。
我试着在最后添加
text_field.Text = x;
并且出现关于范围的消息错误 - 理所当然,我期待该错误。我还尝试在最顶部声明一个名为 x
的字符串变量,并且出现了另一个错误 - 关于无法在不同范围内重新声明变量的问题。我想我已经习惯了 PHP,您可以毫无问题地重新声明一个变量。
我会为此使用正则表达式
string test = "foo+";
var match = Regex.Match(test, @".+([\+\-\*\])$").Groups[1].Value;
如果字符串不以 +-*/
结尾,match 将是 ""
你最好的选择是做一个 FirstOrDefault
然后检查它是否是 null/empty/etc 就好像它是你的布尔值一样。虽然这是一个非常基本的例子,但它应该能说明问题。你如何处理这个结果,如果它应该只是一个或多个,等等取决于你的情况。
static void Main()
{
string test = "foo+";
string[] operators = { "+", "-", "*", "/" };
bool result = operators.Any(x => test.EndsWith(x));
string actualResult = operators.FirstOrDefault(x => test.EndsWith(x));
if (result)
{
Console.WriteLine("Yay!");
}
if (!string.IsNullOrWhiteSpace(actualResult))
{
Console.WriteLine("Also Yay!");
}
}
如果我没理解错的话,这会让你成为接线员
string test = "foo+";
string[] operators = { "+", "-", "*", "/" };
var result = operators.Where(x => test.EndsWith(x)) ;
这只会 return 最后使用的运算符,所以如果它以 -+* 结尾,它会给你字符串中的最后一个字符