我想从网络中获取价值
例如: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);
答案 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