2016-11-15 163 views
0

我的代碼的目標是要求用戶輸入,我的代碼將搜索我的CSV文件並輸出數據所在的正確行和列。然而,我非常難以知道如何提取特定的單元格,以便我可以編輯這些內容。如何從CSV文件輸出特定行的內容?

說我搜索banana和我爲banana代碼搜索,然後輸出特定的行,其中將包括banana,store給一個變量,所以我可以再編輯的位置,並把它放回正確的單元格。

這裏尋找我搜索特定文本的行和列的代碼:

try{ 

     String strSearch = searchSerialField.getText(); 

     CSVReader reader = new CSVReader(new FileReader("test.txt"), ','); 
     List<String[]> myEntries = reader.readAll(); 
     reader.close(); 

     for (int row = 0; row < myEntries.size(); row++) 
     { 
      for (int column = 0; column < myEntries.get(row).length; column++) 
      { 
       if (myEntries.get(row)[column].trim().equalsIgnoreCase(strSearch)) 
       { 
        System.out.println("Found - Your item is on row: " + row + ", column: " + column); 
       } 
      } 
     } 

//I now need to output the contents of the row into something so I can edit it 

我現在只是需要提取一行到的東西,所以我可以再編輯的位置,但我對於我應該如何接近這件事,我毫無頭緒?

如果任何人有任何提示或方法,我應該遵循,那將不勝感激。

謝謝。

+0

編輯從哪裏來?你說你想改變單元格,但是我沒有看到你想要改變的單元格。 –

+0

如果2D陣列中的文件很小,可以使用索引 – Saravana

+0

@DrewWills從二維陣列中存儲文件,如下所示:@DrewWills我想按照說明中的指定更改位置。另一種形式將被打開,所以我可以改變位置,但對於這個具體問題,我想知道如何將行提取到可以編輯的東西。 – juiceb0xk

回答

0

Java String s是不可變的;你不能改變它們,你必須創造新的。另一方面,數組和數組是可變的(除非它們不是)。

你可以做...

for (int row = 0; row < myEntries.size(); row++) 
{ 
    for (int column = 0; column < myEntries.get(row).length; column++) 
    { 
     if (myEntries.get(row)[column].trim().equalsIgnoreCase(strSearch)) 
     { 
      System.out.println("Found - Your item is on row: " + row + ", column: " + column); 
      String myNewString = "something else"; 
      myEntries.get(row)[column] = myNewString; // Replaces the String at this array index 
     } 
    } 
} 

// Now write the contents to a CSVWriter variable called 'myCSVWriter' 
for (String[] entry : myEntries) { 
    myCSVWriter.writeNext(entry); 
} 
myCSVWriter.close(); 

// Actually -- instead of that -- an easier way would be... 
myCSVWriter.writeAll(myEntries); 
myCSVWriter.close(); 

當您完成後,您可以使用myEntries收集覆蓋該文件的內容。

+0

嗯,感謝您的幫助,但我有點卡在如何寫回文件。我已經聲明瞭一個CSVWriter變量,但是我怎麼寫才能將內容寫回文件? – juiceb0xk

+0

如果你有一個正確構造的'CSVWriter',你可以在完成時調用一個(或多於一個)'write *'方法,然後調用'close()'。 –

+0

'writer.writeNext(myEntries)' - 無法將List 轉換爲String []。我嘗試'writer.writeNext(myEntries.toArray(new String [myEntries.size()]));'但它拋出一個錯誤。我怎樣才能成功解決這個錯誤? – juiceb0xk