我希望将字符串中的字符转换为不同的转义格式,如下所示,其中字母“a”是要转换的字符串:
hex-url: %61
hex-html: a
decimal-html: a
我搜索过使用了各种内置方法,但它们只是取出了url-encoding指定的字符(比如'<')并将其转义。我想逃避整个字符串。有没有办法将字符串转换为java中的上述格式(使用内置库,最好)?
答案 0 :(得分:1)
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);
}
答案 1 :(得分:0)
我不确定内置库,但是编写一个方法来自己编写它很容易。您需要做的就是逐个字符地循环字符串,并为每个字符执行以下操作:
"&#"+Integer.toHexString(character)+";";
然后将其附加到您正在制作的新字符串中,该字符串包含所有已编码的字符。
答案 2 :(得分:0)
现有的库方法不可能达到您想要的效果:
您需要自己实施。 (代码很简单......我假设你有能力。)