2013-01-22 70 views
0

我有一個字符串:如何用Java中的引號替換子字符串?

str="{\"type\":\"Polygon\",\"coordinates\":[[[60.677938980978993,56.834449959232998], 
[60.680103564162927,56.834305549577387],[60.679971577383398,56.833005837614643], 
[60.679813193248009,56.832846980836457],[60.678546120164683,56.832760331400671], 
[60.678229351893869,56.831850500219574],[60.677622212708137,56.831893826015182], 
[60.676830292031028,56.832139337910085],[60.67624955020122,56.832818097713471], 
[60.676275947556981,56.833655699235088],[60.676328742268893,56.834724336044253], 
[60.677411033860842,56.834695454369324],[60.677490225928629,56.834478841097273], 
[60.677938980978993,56.834449959232998]]]}" 

現在我想刪除所有\

str.replaceAll("\\",""); 

而得到錯誤:

java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 
\ 

奧基我說。另一個希望其刪除第一個和最後報價:

str.substring(str.indexOf("\""),str.lastIndexOf("\"")); 

,我得到的字符串:

"{\"type\":\"Polygon\",\"coordinates\":[[[60.677938980978993,56.834449959232998], 
[60.680103564162927,56.834305549577387],[60.679971577383398,56.833005837614643], 
[60.679813193248009,56.832846980836457],[60.678546120164683,56.832760331400671], 
[60.678229351893869,56.831850500219574],[60.677622212708137,56.831893826015182], 
[60.676830292031028,56.832139337910085],[60.67624955020122,56.832818097713471], 
[60.676275947556981,56.833655699235088],[60.676328742268893,56.834724336044253], 
[60.677411033860842,56.834695454369324],[60.677490225928629,56.834478841097273], 
[60.677938980978993,56.834449959232998]]]" 

只有最後}被刪除。

我在這段代碼片段中做錯了什麼?

回答

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

工作正常,你的情況。

public String replace(CharSequence target,CharSequence replacement) 

替換 each子此字符串到具有指定文字替換序列字面靶序列匹配的。

String s = "abc" + "\\" + "def"; 
System.out.println(s); 

而且它打印出如下 -

abc\def 

的\在這兩個字符串和正則表達式的轉義字符。

+0

我已經試過了str.replaceAll(「\\」,「」);但會得到錯誤。 –

+1

@KliverMax str.replaceAll();需要正則表達式。只嘗試str.replace(「\\」,「」); –

+0

在這種情況下我沒有得到錯誤,但字符串沒有改變。 –

3

你試過str.replaceAll("\\\\","");? (見https://stackoverflow.com/a/3640386/500478

+0

我覺得\\\\ - \ \ \ \因爲它沒有幫助。 –

+0

你能提供一段源代碼嗎?使用你的例子,我不知道你的字符串是否真的包含反斜槓,或者他們是否在這裏來逃避你的Java字符串中的引號... –

1

使用其中之一的,

str.replaceAll("\\.", ""); 

str.replaceAll("\\\\", ""); 

當您鍵入"\\",這其實是一個反斜槓(由於Java中的字符串轉義特殊字符) 。

正則表達式也用反斜槓作爲特殊字符,你需要用一個反斜槓逃逸,或在最後使用DOT(.)所以,你需要通過"\\\\""\\."的模式來匹配一個反斜槓。

+0

'str.replaceAll(「\\。」,「」);'不工作 –

1
 System.out.println(str.replaceAll("\\\\", "")); 

輸出:

{"type":"Polygon","coordinates":[[[60.677938980978993,56.834449959232998], [60.680103564162927,56.834305549577387],[60.679971577383398,56.833005837614643],[60.679813193248009,56.832846980836457],[60.678546120164683,56.832760331400671],
[60.678229351893869,56.831850500219574],[60.677622212708137,56.831893826015182],
[60.676830292031028,56.832139337910085],[60.67624955020122,56.832818097713471],
[60.676275947556981,56.833655699235088],[60.676328742268893,56.834724336044253], [60.677411033860842,56.834695454369324],[60.677490225928629,56.834478841097273],[60.677938980978993,56.834449959232998]]]}

+0

I認爲\\\\ - > \\因爲它沒有幫助 –

相關問題