2017-11-11 41 views
1

我很努力去理解和解决这个错误我有我试图从文本中获取数字的地方。本地或参数错误,因为它在范围内

其实我有两段文字alternativeAirportPrice.Text。一个人说:

+156 on same day 

所以我想只能输出156从这段文字 对方称:

-156 on same day 

所以我想只能输出 - 156从这段文字

我实现foreach方法使用char.IsNumber(),但我收到c内的错误Select(c => c.toString())

错误是:

本地或参数名称“C”不能在这个范围,因为 该名称是在一个封闭的局部范围中使用的TestSuite定义 本地或参数进行声明。

我需要做些什么来解决这个问题,并能够从文本中只吐出数字?

public string GetAlternativeAirportPrice(By airportPriceLocator) 
{ 
    var alternativeAirportPrices = _driver.FindElements(airportPriceLocator); 

    foreach (var alternativeAirportPrice in alternativeAirportPrices) 
    { 
     if (alternativeAirportPrice.Displayed) 
      foreach (char c in alternativeAirportPrice.Text) 
      { 
       if (char.IsNumber(c)) 
       { 
        alternativeAirportPrice.Text.ToCharArray().Select(c => c.ToString()).ToArray(); 
       } 
      } 
     return alternativeAirportPrice.Text; 
    } 
    return null; 
} 

回答

3

这是因为你已经在下面的行宣布c在你的代码:

foreach (char c in alternativeAirportPrice.Text) 

所以你不能在你的Select再次使用它。尝试用别的东西来代替,例如x

.Select(x => x.ToString()) 

或者尝试重命名cforeach里面别的东西,例如item

foreach (char item in alternativeAirportPrice.Text) 
{ 
    if (char.IsNumber(item)) 
+0

好吧,我会做到这一点。一个小问题。我不确定是否这行代码:alternativeAirportPrice.Text.ToCharArray()。Select(c => c.ToString())。ToArray();正在抓取文本中的数字。似乎它正在返回空白。你知道我需要做什么来解决这个问题吗? – BruceyBandit

+0

@BruceyBandit是的。在这一行'alternativeAirportPrice.Text.ToCharArray()。Select(x => x.ToString())。ToArray();''你只需选择'x',但它不会更新'alternativeAirportPrice.Text'。可能你应该将这行分配给其他变量,然后返回该变量。然而,你应该知道这行是返回一个数组而不是一个字符串,你应该仔细处理。 –

+0

你可以告诉我如何在上面的代码片段中分配变量,因为我已经很快试过这个,但不知道如何返回它。我认为这是因为我的方法是一个字符串,但变量是一个var – BruceyBandit

相关问题