我需要转义“&”,但跳过&amp;我使用下一个功能public static String translateAll(String input, String[] patterns, String[] replacements) { String result = input; for (int i = 0; i < patterns.length; i++) { result = result.replaceAll(patterns[i], replacements[i]); } return result;}...private static final String[] decoded = { "&", "<", ">", "\"", "\'" };private static final String[] encoded = { "&amp;", "&lt;", "&gt;", "&quot;", "&apos;" };public static String escape(String input) { return translateAll(input, decoded, encoded);}...String escapedBodyValue = XMLUtils.escape(originBodyValue);它用&amp;替换所有&但也会用&amp;替换所有&amp;amp;那么,如何跳过已经转义的字符? 最佳答案 您的输入混乱了。我会考虑使用&,<,>不转义将所有内容转义为“正常形式”,然后转义结果。使用StringEscapeUtils(来自Apache Commons lang)看起来像这样:String test = "aaa &amp; bbb & ccc &lt; ddd & eee.";test = StringEscapeUtils.escapeXml(StringEscapeUtils.unescapeXml(test));结果:aaa &amp; bbb &amp; ccc &lt; ddd &amp; eee.如果您真的想继续使用当前的解决方案,建议您使用以下方法:test = test.replaceAll("&(?!.{2,4};)", "&amp;");正则表达式的分解:& 字符&-后跟(?! ___ )___-任意2、3或4个字符.{2,4} ;-后跟;关于java - Java XML:如何转义“&”,但跳过“&”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24340116/
10-12 00:38
查看更多