2016-11-15 160 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