2016-10-22 21 views
1

このCSVファイルを解析しようとしています。 ItemIdの整数からなる第2列には、最後に「X」が含まれます。私は文字を削除して、新しいcsvファイルを出力しようとしています。しかし、それは私の条件文になります。csvファイルを解析する

if (itemId.charAt(itemId.length()-1) == 'X') 

は満足していません。

CODE:

Scanner console = new Scanner(new File("data/BX-Book-Ratings.csv")); 
PrintStream output = new PrintStream(new File("data/Book-Ratings.csv")); 
String row; 

String itemId; 


while(console.hasNextLine()) 
{ 
    row = console.nextLine(); 
    Scanner inputRow = new Scanner(row).useDelimiter(";"); 
    output.print(inputRow.next() + ","); //userid 


    itemId = inputRow.next(); 
    if (itemId.charAt(itemId.length()-1) == 'X') { 
     itemId = itemId.substring(0, itemId.length() - 1); 
    } 

    long newitemId = Long.parseLong(itemId); 
    output.print(newitemId + ",");  //itemid 
    output.println(inputRow.next()); //rating 

} 

DATA

"276725";"034545104X";"0" 
"276726";"0155061224";"5" 
"276727";"0446520802";"0" 
"276729";"052165615X";"3" 
"276729";"0521795028";"6" 
"276733";"2080674722";"0" 
"276736";"3257224281";"8" 
"276737";"0600570967";"6" 
"276744";"038550120X";"7" 
"276745";"342310538";"10" 
"276746";"0425115801";"0" 
"276746";"0449006522";"0" 

答えて

2

あなたのコードは、現在、引用符を無視します。あなたもそれらを処理する必要があります:

itemId = inputRow.next(); 
if (itemId.charAt(itemId.length() - 2) == 'X') { 
    // Remember the end quote ------^ 

    itemId = itemId.substring(1, itemId.length() - 2); 
    // Get rid of the quotes -^ and the X --------^ 
} 
else { 
    itemId = itemId.substring(1, itemId.length() - 1); 
    // Get rid of the quotes -^--------------------^ 
} 

long newitemId = Long.parseLong(itemId); 
関連する問題