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

时间:2018-05-09 05:55:40

标签: java

我有一个约束:我无法在某个特殊存储空间中保存一些字符(例如&=)。

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

我希望将此类字符串转换为另一个不包含这些特殊字符的字符串。

我仍希望能够在不产生歧义的情况下转换回原始字符串。

知道如何实现de / convert吗?感谢。

2 个答案:

答案 0 :(得分:3)

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

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&儿子

答案 1 :(得分:1)

已在评论中指出,但URL Encoding看起来像是要走的路。

在Java中完成简单的URLEncoder和URLDecoder

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