2013-09-24 11 views
2

刪除所有單斜槓假設你有一個文件:如何從一個字符串,同時保留雙斜線完整

word \ sum \"span class=\\"blahblah\\">java 

以下文字如果我把文本轉換成字符串,並使用替代方法如下。 :

word sum "span class="blahblah">java 

不過,我想雙斜線保持不變:

String text = "word \\ sum \\\"span class=\\\\\"blahblah\\\\\">java"; 
text = text.replace("\\", ""); 
System.out.println(text); 

然後字符串文本將被印。爲了只刪除單斜槓而保持雙斜槓不變,我將更改什麼?

所需的輸出:

word sum "span class=\\"blahblah\\">java 
+0

通過雙斜槓是否意味着以「\\\\」以及「\\」兩個倍數的斜槓? – fvrghl

+1

你想要輸出什麼? – Rami

+0

可以有三個反斜槓嗎? – EJP

回答

3

嘗試這種

text = text.replaceAll("(?<!\\\\)\\\\(?!\\\\)", ""); 
+0

好的一個,雖然這不起作用從三個斜槓刪除斜線 – justhalf

+1

我同意,但沒有關於3+斜線的要求 –

+0

是的,我只想指出@EJP在問題評論中的評論。 – justhalf

0
String text = "word \\ sum \\\"span class=\\\\\"blahblah\\\\\">java"; 
text = text.replace("\\\\", "#$%"); // replace '\\' by something unique 
text = text.replace("\\", "");//remove the '\' 
text = text.replace("#$%", "\\\\");//get '\\' back 
+2

這不會編譯:第3行無效 –

0

這將從任何奇數長度連續的反斜槓移除一個反斜槓:

text.replaceAll("(?<!\\\\)(\\\\\\\\)*\\\\(?!\\\\)","$1") 

所以在

text = "word \\ sum \\\"span class=\\\\\"blah\\\\\\\"blah\\\\\">java" 

,或者當打印的情況下:word \ sum \"span class=\\"blah\\\"blah\\">java,結果是:

 
word sum "span class=\\"blah\\"blah\\">java 
相關問題