如何从网上获取价值并将其转换为整数

时间:2018-06-28 11:41:23

标签: java selenium

我想从网络中获取价值 例如:Total AMount : 25000 并希望将此值转换为整数以进行比较步骤,但是在打印totat_Amt之后,它显示为

"java.lang.NumberFormatException: For input string: "25,000""

这是我的代码:

WebElement gt = driver.findElement(By.id("totAmt"));
String total_Amt=gt.toString();
System.out.println("Total Amt:"+total_Amt);
//int total_amt_val =Integer.parseInt(total_Amt);
System.out.println(total_amt_val);

5 个答案:

答案 0 :(得分:2)

尝试替换所有非数字符号:

WebElement gt = driver.findElement(By.id("totAmt"));
String total_Amt = gt.toString(); // "25,000"

// replace 'bad' symbols
String onlyNumbers = total_Amt.replaceAll("[^\\d]", "");  // "25000"

System.out.println("Total Amt: " + total_Amt);
int total_amt_val = Integer.parseInt(onlyNumbers); // 25000
System.out.println(total_amt_val);

\\d的意思是all numbers[^\\d]的意思是all non-numbers,如果要保留其他符号,只需将它们添加到[]中,例如如果您也想保留点,请使用[\\d.]

答案 1 :(得分:2)

您可以使用NumberFormat

NumberFormat.getNumberInstance(Locale.US).parse("25,000").intValue()将返回25000

答案 2 :(得分:1)

您可以尝试以下方法:

WebElement gt = driver.findElement(By.id("totAmt"));
String total_Amt = gt.toString(); // 25,000
total_Amt = total_Amt.replaceAll(",", ""); // removes all ',' -> 25000
int total_amt_val = Integer.parseInt(total_Amt); // 25000 as int already
System.out.println(total_amt_val); // 25000

答案 3 :(得分:1)

您可以先使用replaceAll方法替换所有逗号,然后按如下所示直接对其进行解析。另外,您需要使用getText()方法来检索元素文本。

WebElement gt = driver.findElement(By.id("totAmt"));
//To be changed as gt.getText().
String total_Amt=gt.getText();      
System.out.println("Total Amt:"+total_Amt);
//Replace comma as empty and then you can normal parse the string to int
int total_amt_val =Integer.parseInt(total_Amt.replaceAll(",",""));
System.out.println(total_amt_val)

万一,如果您要获得的total_Amt值为Total AMount : 25000,则使用substring方法提取金额值,然后使用replaceAll方法将所有值替换为空

int total_amt_val =Integer.parseInt(total_Amt.substring(total_Amt.indexOf(":")+2).replaceAll(",",""));

答案 4 :(得分:1)

如果您要处理价格,请使用以下方法:

public static void main(String[] args) throws Exception {

       WebElement gt = driver.findElement(By.id("totAmt"));
       String total_Amt = gt.getText(); // total_Amt=25,000.00

       BigDecimal bd_amt = parse(total_Amt , Locale.US); // Use this if the value is price
       int int_amount = parse(total_Amt , Locale.US).intValueExact(); // Use this if you want integer

       System.out.println("Price : " + bd_amt);
       System.out.println("Amount : " + int_amount);
}

private static BigDecimal parse(final String amount, final Locale locale) throws ParseException {
    final NumberFormat format = NumberFormat.getNumberInstance(locale);
    if (format instanceof DecimalFormat) {
        ((DecimalFormat) format).setParseBigDecimal(true);
    }
    return (BigDecimal) format.parse(amount.replaceAll("[^\\d.,]", ""));
}

样本输出:

 Price : 25000.00
 Amount : 25000