2016-11-15 24 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配列のファイルを2D配列に格納するには、2D配列からインデックス – Saravana

+0

@DrewWillsを使用して位置を取得することができます。説明で指定されているとおり、場所を変更したいと思います。私は場所を変更することができるように別のフォームが開かれますが、この特定の質問について、行をどのように抽出して編集できるのかを知りたいと思っています。 – juiceb0xk

答えて

0

Java Stringは不変です。それらを変更することはできません、あなたは新しいものを作成する必要があります。一方、配列と配列は変更可能です(そうでない場合を除きます)。

あなたは...

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 *'メソッドの1つ(または複数)を呼び出して、その後で 'close()'を呼び出すことができます。 –

+0

'writer.writeNext(myEntries)' - リストをString []に変換できません。 'writer.writeNext(myEntries.toArray(new String [myEntries.size()]);)を試しましたが、エラーが発生しています。このエラーを回避するにはどうしたらいいですか? – juiceb0xk

関連する問題