java - 将字符串中的所有字符转换为不同的转义格式(Java)

标签 java decimal hex url-encoding html-encode

我希望将字符串中的字符转换为不同的转义格式,如下所示,其中字母“a”是要转换的字符串:

hex-url: %61
hex-html: a
decimal-html: &#97

我搜索过各种内置方法,但它们只是取出 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); 
}

关于java - 将字符串中的所有字符转换为不同的转义格式(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6714747/

相关文章:

excel - 如何在VLOOKUP公式中显示数字的小数点?

python - 如何在 Python 中舍入十六进制值

string - 转换十六进制字符串的问题(在 Lua 中)

java - 比较 Java 中的两个十六进制字符串?

java - 简单形式的 Wicket AjaxFallbackButton(更新 : also Button)

java - 将一些 Java 转换为 C#

VB.Net Convert ToDecimal 不适用于逗号

php - 如何在SQL或PHP中将decimal(16,4)转换为DATE或DATETIME

java - 使用 Java 类文件中的方法

java - 用两个函数填充二叉树