2013-12-09 103 views
0

我有我正在打印的Stringstr =\'abc\'。其印刷像\'abc'\而不是'abc'從字符串中替換特殊字符

我已經試過此選項:str.replaceAll("\\", "");但它給我java.util.regex.PatternSyntaxException:意外內部錯誤接近指數1

誰能幫助解決這個問題。

+1

你介意給語言添加標籤嗎?可能是Java,但讓我們確定。 – Bathsheba

+0

是的,它的Java。事情是,我們打印從Java讀取它的C代碼表達式。對於例如char myChar ='a',當這個表達式到達我(Java級別)時,我們得到myChar = \'a \'。所以我們需要打印一樣的「[myChar ='a']」。現在,它的特殊字符印刷。 – Nikhil

回答

0

我想你的意思是:

公共ABC類{

public static void main(String[] args) { 


    String str ="\'abc\'"; 

    System.out.println(str); 

} 

}

輸出: 'ABC'

它對我來說是正確的。

+0

public static void main(String [] args){String str =「\'abc \'」;的System.out.println(str.replace( 「\\」, 「」)); }這爲我工作...其實我對我的輸入感到困惑,所以輸入將是'abc',我可以使用replace(「\\」,「」),這將解決我的問題。不管怎麼說,多謝拉 :) – Nikhil

0

你爲什麼要使用正則表達式,你可以這樣做:

str = str.replace("\\", ""); 

如果你必須使用正則表達式,那麼你需要使用:

str = str.replace("\\\\", ""); 

正則表達式需要雙Java中逃脫,因爲字符串和正則表達式引擎機器人需要逃跑。

+0

這不起作用。 – Nikhil

+0

String str =「\\'a \\'」; System.out.println(「原始字符串:」+ str); str.replace(「\\」,「」);不打印預期的結果。 – Nikhil

+0

見**工作演示:http://ideone.com/VmtZ5u** – anubhava

0

你的方法:

private static String getNewString(String str) { 
     str.replaceAll("\\\\", ""); 
     System.out.println("The updated String : "+str); 
     return str; 
} 

將返回初始字符串,字符串既然是不可變的。 str.replaceAll將會保持原樣,它會生成一個新的字符串。

測試用例改成這樣:

public static void main(String ...string) { 
     String str = "\\'a\\'"; 
     System.out.println("The original String : "+str); 
     str = getNewString(str); 
    } 

    private static String getNewString(String str) { 
     String rez = str.replaceAll("\\\\", ""); 
     System.out.println("The updated String : "+rez); 
     return rez; 
    }