我列出了10个Iwebelements。我已经将他们的文本存储到另一个列表中(因为我只需要检查所有10个是按字母顺序排列)
任何人都可以告诉我该怎么做。
(下面的代码将获取所有元素的列表,使用Foreach我将获取他们的文本并将其添加到X列表中)
IList<IWebElement> otherSports = Driver.FindElements(By.CssSelector(".sports-buttons-container .other-sport .sport-name"));
List<string> x = new List<string>();
foreach (var item in otherSports)
{
string btnText = item.Text.Replace(System.Environment.NewLine, "");
x.Add(item.Text.Replace(System.Environment.NewLine, ""));
}
注意: - 我不想对列表进行排序。我只想查看列表X中的所有项目是否按字母顺序排列。
任何帮助将不胜感激。
答案 0 :(得分:2)
您可以使用StringComparer.Ordinal
检查两个字符串是否按字母顺序排列。
var alphabetical = true;
for (int i = 0; i < x.Count - 1; i++)
{
if (StringComparer.Ordinal.Compare(x[i], x[i + 1]) > 0)
{
alphabetical = false;
break;
}
}
如果您更喜欢LINQ(但不太可读,IMO),则可以选择其他解决方案
var alphabetical = !x.Where((s, n) => n < x.Count - 1 && StringComparer.Ordinal.Compare(x[n], x[n + 1]) > 0).Any();
编辑,因为您正在生成自己的列表,所以您可以在创建列表时将解决方案1添加到代码中,这样会更有效。
IList<IWebElement> otherSports = Driver.FindElements(By.CssSelector(".sports-buttons-container .other-sport .sport-name"));
List<string> x = new List<string>();
var alphabetical = true;
string previous = null;
foreach (var item in otherSports)
{
string btnText = item.Text.Replace(System.Environment.NewLine, "");
var current = item.Text.Replace(System.Environment.NewLine, "");
x.Add(current);
if (previous != null && StringComparer.Ordinal.Compare(previous,current) > 0)
{
alphabetical = false;
}
previous = current;
}
答案 1 :(得分:0)
我会这样做
png
因此,此方法将失败,直到列表x列表按字母顺序排序