C# 如何在selenium中仅从文本中获取数字?

C# 如何在selenium中仅从文本中获取数字?,c#,selenium,selenium-webdriver,C#,Selenium,Selenium Webdriver,在foreach循环中,如果元素显示,我将捕获它的一段文本。但是,我只想获取元素文本中的数字(正数和负数) 目前,文本可以是: +156 on same day or -88 on same day 我只想从本文中获取值,因此这应该是: 156 or -88 如何从alternativeAirportPrice.Text中仅获取数字,如果减去数字,则获取负号 public string GetAlternativeAirportPrice(By airportPriceLocator) {

在foreach循环中,如果元素显示,我将捕获它的一段文本。但是,我只想获取元素文本中的数字(正数和负数)

目前,文本可以是:

+156 on same day
or
-88 on same day
我只想从本文中获取值,因此这应该是:

156
or
-88
如何从alternativeAirportPrice.Text中仅获取数字,如果减去数字,则获取负号

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

    foreach (var alternativeAirportPrice in alternativeAirportPrices)
    {
        if (alternativeAirportPrice.Displayed)
            return alternativeAirportPrice.Text;
    }
    return null;
}
请尝试以下代码:

string test = "-123";
string result;
foreach(Char i in test) {
    if (Char.IsNumber(i)) {
        result += i;
    }
}
int value = int.Parse(result);

如果您需要整数而不是行数:

return alternativeAirportPrice.Text;
你可以写:

    int r;
    int.TryParse(alternativeAirportPrice.Text.Trim().Split(' ').First(), out r);
    return r;
它适用于您编写的两种情况。如果可能存在空字符串,则可以在调用string方法之前检查空字符串。如果您可能有十进制数,只需将int改为double即可。
当然,您必须将方法返回类型更改为int。

有很多方法可以做到这一点。。但是您可以使用一些内置的扩展方法,例如
Char.IsNumeric
在google上快速搜索联机示例这与其说是一个selenium问题,不如说是一个字符串解析问题。搜索这一点可能有助于您的研究。Ues regluar表达式的可能重复可以使您的代码看起来简单。在你的代码中试试([+-]\d+),我不是C迷,但我在浏览器控制台上试试,比如(“+156在同一天”)。匹配(/([+-]\d+/)[1],浏览器控制台使用JavaScript