У меня есть строка с фигурными кавычками. Я хотел бы заменить их HTML-сущностями, чтобы они не перепутали другие нисходящие системы. Для моей первой попытки я просто добавил соответствие для символов, которые хотел заменить, введя их непосредственно в мой код:
public static String escapeXml(String s) {
StringBuilder sb = new StringBuilder();
char characters[] = s.toCharArray();
for ( int i = 0; i < characters.length; i++ ) {
char c = characters[i];
switch (c) {
// other escape characters deleted for clarity
case '“':
sb.append("“");
break;
case '”':
sb.append("”");
break;
case '‘':
sb.append("‘");
break;
case '’':
sb.append("’");
break;
default:
sb.append(c);
break;
}
}
return sb.toString();
}
Это скомпилировано и отлично работает на моем Mac, но когда наш CI-сервер (который работает в Linux) попытался его собрать, он задохнулся:
Out.java:[347,16] duplicate case label
Очевидно, что некоторая часть цепочки сборки на коробке Linux не может распознавать и различать эти причудливые символы.
Моя следующая попытка состояла в использовании экранирования Unicode. К сожалению, это даже не скомпилируется на моем Mac:
...
case '\u8220':
sb.append("“");
break;
case '/u8221':
sb.append("”");
break;
...
Мой компилятор выдает эту жалобу:
Out.java:[346,21] unclosed character literal
Я озадачен тем, как можно выполнить эту замену и обеспечить ее надежную работу на разных платформах. У кого-нибудь есть указатели? Заранее спасибо.