2016-11-15 2 views
0

Цель моего кода - попросить пользователя ввести его, и мой код будет искать мой CSV-файл и выводит правильную строку и столбец, данные лежат. Тем не менее, я довольно тупик относительно того, как извлечь эту конкретную ячейку, чтобы затем я мог редактировать содержимое.Как вывести содержимое определенной строки из файла CSV?

Say I поиск 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-массиве, если его маленький, из 2D-массива вы можете получить позицию, используя индекс – Saravana

+0

@DrewWills Я хочу изменить местоположение, как указано в описании. Будет открыта другая форма, поэтому я могу изменить местоположение, но для этого конкретного вопроса я хочу знать, как я могу извлечь строку во что-то, что я могу затем отредактировать. – juiceb0xk

ответ

0

Java String s неизменяемы; вы не можете их изменить, вам нужно создать новые. List 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)' - Невозможно преобразовать Список в String []. Я попробовал 'writer.writeNext (myEntries.toArray (new String [myEntries.size()])) ;, но он выдает ошибку. Как я могу успешно обойти эту ошибку? – juiceb0xk

Смежные вопросы