2017-06-12 39 views
0

我想從我從文件中獲取的行中刪除所有換行符。 但我不能刪除NEL行終止,我發現\ r換行符匹配任何Unicode換行符序列,相當於:使用Groovy從String中刪除NEL換行符?

  • [\u000D\u000A|[\u000A\u000B\u000C\u000D\u0085\u2028\u2029]

下面是我的代碼,所以使用簡單的字符串,最後包含一個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.請刪除其中一個反斜槓,或者使用單引號或雙引號將該字符串進行匹配,然後找到匹配項。

+0

謝謝,但是當我刪除1個backsalch,所以我得到Caught:java.util.regex.PatternSyntaxException:索引1附近的非法/不支持的轉義序列 \ R – Yacino

+0

那麼,這是因爲錯誤是正確的,你沒有閱讀文檔正確。 ;-)'\ R'在「Perl構造**不支持該類的Perl構造:」部分中提到,所以沒有這種預定義的字符類。只需使用您在問題中提到的長顯式版本即可。 – Vampire

+0

再次感謝我只用了很長的一段,這很好;) – Yacino