我期待字符串中的字符轉換爲不同的格式逃脫類似以下,其中字母「A」正在轉換的字符串:轉換所有字符數的字符串不同轉義格式(JAVA)
hex-url: %61
hex-html: a
decimal-html: a
我搜索過使用各種內置方法,但他們只是取出url編碼指定的字符(如'<')並轉義它們。我想逃避整個字符串。有什麼辦法在java中將字符串轉換爲上述格式(最好使用內置庫)?
我期待字符串中的字符轉換爲不同的格式逃脫類似以下,其中字母「A」正在轉換的字符串:轉換所有字符數的字符串不同轉義格式(JAVA)
hex-url: %61
hex-html: a
decimal-html: a
我搜索過使用各種內置方法,但他們只是取出url編碼指定的字符(如'<')並轉義它們。我想逃避整個字符串。有什麼辦法在java中將字符串轉換爲上述格式(最好使用內置庫)?
public class StringEncoders
{
static public void main(String[] args)
{
System.out.println("hex-url: " + hexUrlEncode("a"));
System.out.println("hex-html: " + hexHtmlEncode("a"));
System.out.println("decimal-html: " + decimalHtmlEncode("a"));
}
static public String hexUrlEncode(String str) {
return encode(str, hexUrlEncoder);
}
static public String hexHtmlEncode(String str) {
return encode(str, hexHtmlEncoder);
}
static public String decimalHtmlEncode(String str) {
return encode(str, decimalHtmlEncoder);
}
static private String encode(String str, CharEncoder encoder)
{
StringBuilder buff = new StringBuilder();
for (int i = 0; i < str.length(); i++)
encoder.encode(str.charAt(i), buff);
return ""+buff;
}
private static class CharEncoder
{
String prefix, suffix;
int radix;
public CharEncoder(String prefix, String suffix, int radix) {
this.prefix = prefix;
this.suffix = suffix;
this.radix = radix;
}
void encode(char c, StringBuilder buff) {
buff.append(prefix).append(Integer.toString(c, radix)).append(suffix);
}
}
static final CharEncoder hexUrlEncoder = new CharEncoder("%","",16);
static final CharEncoder hexHtmlEncoder = new CharEncoder("&#x",";",16);
static final CharEncoder decimalHtmlEncoder = new CharEncoder("&#",";",10);
}
完美!這符合我的目的。謝謝一堆。 – user847381
我不確定關於內置的庫,但很容易編寫一個方法來做到這一點。所有你需要做的是循環通過字符的字符串字符併爲每個字符做這樣的事情:
"&#"+Integer.toHexString(character)+";";
,然後將其追加到你製作的具有編碼的所有字符的新字符串。
有不太可能是現有的庫方法你想要做什麼:
您需要自行實施。 (代碼是微不足道的......我假設你有能力。)
一些更多的細節會有所幫助。一些預期投入和預期產出如何? –