有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将一个字符串转换为另一个字符串,从而在输出中不允许使用特定字符?

我有一个限制:我不能将一些字符(如&=)保存在某个特殊的存储中

问题是,我有一些字符串(用户输入)包含这些不允许的特殊字符,我希望将其保存到该存储中

我想把这样的字符串转换成另一个不包含这些特殊字符的字符串

我希望仍然能够转换回原始字符串,而不会产生歧义

你知道如何实现反转换吗?谢谢


共 (2) 个答案

  1. # 1 楼答案

    已经在评论中指出,但是URL Encoding看起来是一条路要走

    在Java中,只需URL编码器和URL解码器即可

    String encoded = URLEncoder.encode("My string &with& illegal = characters ", "UTF-8");
    System.out.println("Encoded String:" + encoded);
    
    String decoded = URLDecoder.decode(encoded, "UTF-8");
    System.out.println("Decoded String:" + decoded);
    

    URLEncoder URLDecoder

  2. # 2 楼答案

    将用户输入转换为十六进制并保存。并将十六进制值转换回字符串。使用这些方法

    public static String stringToHex(String arg) {
        return String.format("%x", new BigInteger(1, arg.getBytes(Charset.forName("UTF-8"))));
    }
    
    public static String hexToString(String arg) {
        byte[] bytes = DatatypeConverter.parseHexBinary(arg);
        return new String(bytes, Charset.forName("UTF-8"));
    }
    

    用法:

    String h = stringToHex("Perera & Sons");
    System.out.println(h);
    System.out.println(hexToString(h));
    

    输出

    506572657261202620536f6e73
    Perera & Sons