我有一個字符串,其中包含引號。我想用HTML實體替換它們,以確保它們不會混淆其他下游系統。對於我的第一次嘗試,我只是說了我想替換字符匹配,直接在我的代碼輸入他們:如何HTML轉義Java字符串中的捲動引號
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
我感到困惑,人們可能會怎麼做替代該位就了事可靠地跨平臺。有人有任何指示嗎?提前致謝。
如何不使用曲線引號? – 2009-11-13 21:08:06
...等等,應該是'case'/ u8221':'或'case'\ u8221':'? – 2009-11-13 21:09:20
回覆:Unicode轉義 - 我看到2個開關案例有不同的斜槓 - \和/ – Thimmayya 2009-11-13 21:14:46