如何从涉及其他字符的字符串中获取int?

时间:2017-10-09 16:37:23

标签: java excel apache-poi

我正在编写一个程序,我希望在文档中使用如下所示的ID迭代某些属性:

"id": "competitor:2672"

我想根据从excel文件中读取的数据进行迭代。唯一的问题是,在所述excel文件中,ID仅作为

给出
2672
列中的

"竞争者ID"。

我无法将给定的String解析为整数。比较两个ID的最佳和最干净的方法是什么

使用apache POI我想做类似的事情

String COLUMN_ID = "G" // Column letter in which the IDs are stored
Document home = competitors.get(0);
Document away = competitors.get(1);
String homeIDString = home.get("id").toString();
int homeID = //how to get this from the upper string?
String awayIDString = away.get("id").toString();
int awayID = //how to get this from the upper string?
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
XSSFSheet sheet = workbook.getSheetAt(0);
for (int row=0; <something>; row++) {
    XSSFCell cell = sheet.getRow(row).getCell(CellReference.convertColStringToIndex(COLUMN_ID));
    if (cell.getCellTypeEnum().equals(NUMERIC)) int cellValue = (int) cell.getNumericValue();
    if (cellValue == homeID) { do something }
    else if (cellValue == awayID) { do something }
}

1 个答案:

答案 0 :(得分:3)

您目前正在获得NumberFormatException,因为您尝试将String转换为int,然后再与int进行比较。

@azurefrog说的是,您可以尝试将int转换为String(反之亦然),这样会很好。

strVariable.endsWith(String.valueOf(intVariable))

但是,"id": "competitor:2672"72也会返回true这个问题。

更好的方法是在将competitor:转换为int之前使用子字符串删除2672

String myInput = "competitor:2672";      // "competitor:2672"
myInput = myInput.substring(11);         // "2672"
int myValue = Integer.parseInt(myInput); // 2672