ToLower()不是小写字符串

本文关键字:字符串 ToLower | 更新日期: 2023-09-27 18:03:39

 List<string> expectedResult = new List<string> { "article i", "article ii", "article iii" };
 string result = Selenium.GetText("result_list");
 if (expectedResult.Any(result.ToLower().Contains))
 {
    // do something
 }

我得到result = "Article I",但expectedResult.Any(result.ToLower().Contains)返回false。不知道为什么ToLower()不工作?

谁能检查一下我的工作,让我知道我是否做得对吗?

ToLower()不是小写字符串

试试这个:

List<string> expectedResult = new List<string> { "article i", "article ii", "article iii" };
string result = Selenium.GetText("result_list");
if (expectedResult.Contains(result.ToLower()))
{
   // do something
}

这是预期的工作,你的字符串从Selenium必须是不同的。

生成匹配的测试用例:

List<string> expectedResult = new List<string> { "article i", "article ii", "article iii" };
string result = "Article I";
if (expectedResult.Any(result.ToLower().Contains))
{
    Console.WriteLine("Contains");
    // do something
}

在这种情况下不使用ToLower更有效,而是使用StringComparerContains过载。

原因是ToLower将创建原始字符串的(临时)副本,而Contains重载不会:

if (expectedResult.Contains(result, StringComparer.CurrentCultureIgnoreCase))
{
    // do something
}