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>", "");

ただし、機能していません。

final をコンソールに出力すると、inputString と同じままです。

どうした ?

4

2 に答える 2

2

検索部分は正規表現なので、正規表現で特殊文字と解釈される文字をエスケープする必要があります (例: ?)。

面倒なことに、文字列内の特殊文字 ( など) のエスケープ シーケンスとして解釈されないように、エスケープ文字もエスケープする必要があります\n。つまり\\?、次の場所に配置する必要があり?ます。

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

または、文字列が複数回出現する可能性は低いため、 のreplace()方法を使用できますString。このメソッドは正規表現を使用しないため、何もエスケープする必要はありません。

String output = inputString.replace("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><tag1>", "");
于 2012-08-30T14:17:53.490 に答える
2

正規表現の置換を使用したくない場合。シンプルで単純なreplace方法を使用するだけで、コードが機能します。その場合、使用している文字列リテラルは正しいでしょう。

于 2012-08-30T14:16:27.907 に答える