替换包含引号的字符串中的子字符串

时间:2012-08-30 14:14:45

标签: java string

我的输入字符串是:

<?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相同。

问题是什么?

2 个答案:

答案 0 :(得分:2)

您不想使用正则表达式替换。只需使用简单的replace方法,代码就可以运行。在这种情况下,您使用的字符串文字将是正确的。

答案 1 :(得分:2)

搜索部分是正则表达式,因此您需要转义由正则表达式解释为特殊字符的字符(例如?)。

令人讨厌的是,您还必须转义转义符,以便它不会被解释为String中特殊字符(如\n)的转义序列。这意味着您需要将\\?放在?

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

或者,由于字符串不太可能出现多次,因此您可以使用replace()的{​​{1}}方法。此方法不使用正则表达式,因此您无需转义任何内容:

String