2017-02-07 5 views
0

私はUnixスタイルの行末(LF)を複数行の文字列でWindowsスタイル(CR LF)に変換しようとしています。str.replaceAll()は " r n"と一致しません

攻撃の私の計画は、以下のとおりです。

  • はその後、しかしCR LF

ですべてLFのインスタンスを置き換え、このコードのスニペットが一致していないだけでLF

  • ですべてCR LFのインスタンスを置き換えますthe "\r\n"

    String test = "test\r\ncase"; 
    test.replaceAll("\r\n","\n"); 
    
    PrintWriter testFile = new PrintWriter("test.txt"); 
    testFile.print(test); 
    testFile.close(); 
    

    私は既にdouble/triple/quadrupleのバックスラッシュを使ってみました。サイコロはありません。

    test文字列には、\r\nという文字列が含まれていないことがわかります。これは、ファイルに出力するときにCR LFと検出されるためです。

    私はここで何が欠けていますか?

  • +0

    を、その後変更変更しないことをString

    String test = "test\r\ncase"; //Print the character before for(char c : test.toCharArray()){ System.out.print((int)c + " ");}; System.out.println(); //Save the replace result test = test.replaceAll("\r\n","\n"); //Print the character after for(char c : test.toCharArray()){ System.out.print((int)c + " ");}; 

    ショーのインスタンスを変更することができます方法はありませんものでReplaceAll 'への最初の入力引数'は正規表現であるはずです。おそらくあなたは '' [\ r \ n] + ''など(おそらく '"(\ r \ n | \ r | \ n) "')を使うべきです。 –

    +0

    @barakmanosそれではどうしたらいいですか?私はすでに二重バックスラッシュを試みたが役に立たない。 – Zaid

    +0

    いいえ、バックスラッシュはここでのポイントではありません。二重バックスラッシュでは、基本的に 'replaceAll'関数にバックスラッシュを探すように指示しています。最初の引数を適切な正規表現として与える必要があります。 –

    答えて

    1

    コードから変更されたStringを取得していません。

    文字列はであるため、replaceAllから返された値を保存する必要はありません。テストは、最初は、私はあなたが実際に欠けていると思う

    116 101 115 116 13 10 99 97 115 101 //BEFORE 
    116 101 115 116 10 99 97 115 101 //AFTER 
    
    関連する問題