2017-05-12 8 views
0

環境:Windows、Java 1.8 ファイルの内容を読み込んでいますが、行の書式を設定してタブを削除しようとしましたが、replaceAllは機能しません。文字列からタブが削除されない

私がしようと試み:私はデバッガに見て、タブが置き換えられない

BufferedReader bf = FileUtils.getBufferedReader(filePath); 
    String line; 

    try { 
     while ((line = bf.readLine()) != null) 
     { 
      if(line.matches(".*=.*")) 
      { 
       // this is a simple test scenario 
       String test = "\tVERSION=version"; 
       test.trim(); 
       test.replaceAll("\t", ""); 

       line.trim(); 
       line.replaceAll("\\t", ""); 

      } 
     } 
    } catch (IOException e) { 
     System.err.println("[ERROR] : Could not read from file <" + filePath + ">!\n"); 
     System.exit(0); 
    } 

。テストシナリオでは、私は\t\\tの両方の変種を試してみました。私は何か間違っているのですか?

+5

「文字列」を再割り当てする方法は、「文字列」は不変です。 – SomeJavaGuy

+1

'' test = test.replaceAll(...) 'など、いくつかのJavaの男が提案したようにしてください) – Thomas

+0

@SomeJavaGuyうん、それは問題だった –

答えて

1

Javaでは、文字列は変更不可能です。つまり、String.replaceAllなどのメソッドは、そのメソッドを呼び出すStringオブジェクトを変更できませんでした。

documentationに記載されているように、String.trim()とString.replaceAll()は両方とも、変更された新しい文字列を返します。それはあなたが使用する必要がある文字列であり、古い文字列を忘れてしまいます。あなたのコードは次のようになります:

test = test.trim(); 
test = test.replaceAll("\t", ""); 

line = line.trim(); 
line = line.replaceAll("\\t", ""); 
+1

それは、ありがとう、たくさん!私はすべてのチュートリアルから変数への導入がそれ自身の重要性を持っていると思います... –

関連する問題