2012-08-30 84 views
1

我的輸入字符串的字符串替換字符串是:包含引號

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><tag1><tag2></tag2></tag1> 

我想更換部分如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><tag1> 

與空間。

所以我寫了:

String final = inputString.replaceFirst("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><tag1>", ""); 

但是,它不工作。

在最終打印到控制檯時,它仍然與inputString相同。

問題是什麼?

+6

replaceFirst需要一個正則表達式,並且<?有特殊的含義。 – assylias

+0

@assylias:不知道replaceFirst需要一個正則表達式。謝謝! – Nik

回答

2

你不想使用正則表達式替換。只需使用普通的簡單replace方法和代碼將工作。在這種情況下,您使用的字符串文字將是正確的。

2

搜索部分是正則表達式,所以您需要轉義通過正則表達式解釋爲特殊字符的字符(例如?)。令人討厭的是,您還必須轉義轉義字符,以便它不會被解釋爲字符串中特殊字符(如\n)的轉義序列。這意味着你需要把\\?,你必須?

String output = inputString.replaceFirst("<\\?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"\\?><tag1>", ""); 

另外,因爲該字符串是不太可能發生不止一次,你可以使用的Stringreplace()方法。這種方法不使用正則表達式,所以你不需要轉義任何東西:

String output = inputString.replace("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><tag1>", "");