2017-10-09 16 views
0

私はこのようになりますIDで文書内の特定の属性を反復処理するプログラムを書いている:他の文字を含む文字列からintを取得するには?

"id": "competitor:2672" 

私は、Excelファイルから読み取られたデータに基づいて反復処理したいです。唯一の問題は、前記エクセルファイルにおいて、IDが

2672 

の「競合他社ID」の列にしか与えられていないことです。

指定された文字列を整数に解析できません。私はあなたがintにあなたのStringを変換しようとしているので、あなたは現在NumberFormatExceptionを取得しているこの

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

2672を変換する前に、サブストリングを使用してcompetitor:を削除することです「私は整数に与えられた文字列を解析することはできません*。*」 - なぜいけないのでしょうか?私はあなたがid文字列がExcelからの数字で終わるかどうかを確認することができると思うが、数字を文字列から引っ張って数値として比較するのを止めているのは分からない。 – azurefrog

+0

私はプログラミングにあまり経験はありませんが、私の経験では、これは** NumberFormatException **を与えます。または私は間違っていますか? –

答えて

3

ような何かをしたいApacheのPOIを使用して2つのID

を比較するための最良かつクリーンな方法は何ですかそれを別のものと比較する前にint

@azurefrogが言っていることは、intString(他の方法で)に変換しようとすることができ、それは問題ありません。

strVariable.endsWith(String.valueOf(intVariable))

しかしこれは"id": "competitor:2672"72があまりにもtrueを返すという問題があります。


良い方法は、単にint型

String myInput = "competitor:2672";  // "competitor:2672" 
myInput = myInput.substring(11);   // "2672" 
int myValue = Integer.parseInt(myInput); // 2672 
関連する問題