2017-06-12 4 views
0

ファイルから取得した行からすべての改行を削除しようとしています。そう使用して、以下 Groovyを使用してStringからNEL改行を削除しますか?

  • [\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]
  • が私のコードです: しかし、私は NELラインターミネータを削除することはできません、私は\ R改行マッチャーあらゆるUnicode改行シーケンスは、と等価であることが判明しました最後に NELを含む単純な文字列では、マッチャーはブレークラインを見つけることができません。

    import java.util.regex.Matcher 
    import java.util.regex.Pattern 
    
    class LineBreakDeleter { 
    
    
        static void main (String []args){ 
    
           String line="hello"; 
           Pattern pattern = Pattern.compile(/\\R/); 
           Matcher matcher = pattern.matcher(line); 
           if (matcher.find()) 
           { 
            System.out.println("Found"); 
           } 
         } 
    } 
    
+0

あなたの文字列はNELを持たないようです。 ['/ \ R /'があれば問題なく動作する](https://ideone.com/9RL9m8)。 –

答えて

1

これは、正規表現が間違っているためです。

スラッシュ文字列では、バックスラッシュは文字列の意味での特殊な意味を失います。したがって/\\R/'\\\\R'と等しく、バックスラッシュとそれに続く上位Rを探しています。バックスラッシュの1つを削除するか、一重引用符または二重引用符で文字列を作成してください。

+0

ありがとう、しかし、バックスラッシュを1つ取り除くと、捕まえることになる:java.util.regex.PatternSyntaxException:インデックス1の近くに無効な/サポートされていないエスケープシーケンス \ R – Yacino

+0

これは、エラーが正しいため、適切に文書を作成します。 ;-) '\ R'は"このクラスでサポートされていない** Perlのコンストラクト** "セクションで言及されているので、このような事前定義された文字クラスはありません。あなたの質問にも述べた長い明示的なバージョンを使用してください。 – Vampire

+0

ありがとうもう一度私はちょうど長い明示的なものを使用しました。 – Yacino

関連する問題