2016-11-20 6 views
0

文字列を.txtファイルに置き換えようとしています。私は自分のコードを実行すると しかし、プログラムはちょうどここで、スペース 含むラインのすべてを削除し、私のコードです:replaceAllで文字列変数を使用することは可能ですか?

I drink Java 
I sleep Java 
This is test string 1 
This is test string 20000 

file.txtを

public static void main(String[] args) { 
    try { 
     String str; 
     String temp = ""; 
     String oldtext = ""; 
     BufferedReader br = new BufferedReader(new FileReader("file.txt")); 
     while ((str = br.readLine()) != null) { 
      oldtext += str + "\r\n"; 
      if (str.equals("I drink Java")) { 
       temp = br.readLine(); 
       System.out.println(temp); 
      } 

     } 
     br.close(); 
     String newtext = oldtext.replaceAll(temp, "Hello"); 

     FileWriter writer = new FileWriter("file.txt"); 
     writer.write(newtext); 
     writer.close(); 
    } catch (IOException ioe) { 
     ioe.printStackTrace(); 
    } 
} 

私は「私を交換しようとしています文字列変数tempを使用して「Javaをスリープする」行を「Hello」に設定します。私はそれがString newtext = oldtext.replaceAll("I sleep Java","Hello"); を使用して動作することを認識していますが、それは私のやり方と同じようにできるかどうかを知りたいのです。そして、はいの場合、誰が私が間違っているか教えてくれますか? ありがとう!行は、あなたが次の行を読んで、tempにそれを保存し、 「私は、Javaを飲む」である場合

while ((str = br.readLine()) != null) { 
    oldtext += str + "\r\n"; 
    if (str.equals("I drink Java")) { 
     temp = br.readLine(); 
     System.out.println(temp); 
    } 
} 

::)

+0

replaceAll()は、正規表現を使用する場合に便利です。あなたはそうしない。代わりにreplace()を使用してください。 –

+0

あなたはそれを働かせましたか? – ItamarG3

答えて

1

は、このを詳しく見てみましょう。 その行は、他のすべての行と同様に、oldtext、 には追加されません。 したがって、この行はoldtextにありません。

その後、 は、あなたはこれを実行すると:tempoldtextの一部ではないので、

String newtext = oldtext.replaceAll(temp, "Hello"); 

何も、tempと一致しません。 おそらく、あなただけの他のすべての行のように、それを追加したい:

oldtext += temp + "\r\n"; 
+0

ヘッドアップに感謝...私の割り当てを保存しました:D もう一度ありがとう! – Jerry

0

あなたはtempを設定するbr.readLine()を呼び出すべきではありません。

while ((str = br.readLine()) != null) { 
    oldtext += str + "\n"; 
    if (str.equals("I drink Java")) { 
     temp = str+"\n"; 
    } 
} 
br.close(); 
String newtext = oldtext.replaceAll(temp, "Hello"+"\n"); 
0

あなたが最初にチェックされている理由strは以下のコードでI drink Javaが含まれています。最初にファイル内の完全なテキストをjava変数に読み込み、最後に置き換えます。

それはより多くの、最適化された読みやすく、きれいになります

while((str = br.readLine()) !=null) { 
     oldtext += str + "\r\n"; 
     if(str.equals("I drink Java")){ 
     temp = br.readLine(); 
     System.out.println(temp); 
     } 

}  br.close(); 
String newtext = oldtext.replaceAll(temp,"Hello"); 

最良の方法は、

String newText= ""; 
while((str = br.readLine()) !=null) { 

     if(str.equals("I drink Java")){ 
     str = "Hello"; 
     } 
     newText+= str + "\r\n"; 

}  br.close(); 

今、単に新しいの書き込みになります

while((str = br.readLine()) !=null) { 
     oldtext += str + "\r\n"; 


}  br.close(); 
String newtext = oldtext.replaceAll("I drink Java","Hello"); 

下回るような何かテックスt

 FileWriter writer = new FileWriter("file.txt"); 
     writer.write(newtext); 
     writer.close(); 
+0

通知は、 'replaceAll()'で変数を使用することについて質問します。 – ItamarG3

+0

@ItamarGreen申し訳ありませんが、私はここであなたを得られませんでした。 'replaceAll()'はoldtextの 'I drink Java'の全てのものを置き換えます。だから何が問題なの? –

+0

彼は 'replaceAll()'で変数を使いたかったのです。 – ItamarG3

関連する問題