Java 如何将一个字符串转换为另一个字符串,以避免特定字符';输出中不允许使用?
我有一个限制:我不能将一些字符(如Java 如何将一个字符串转换为另一个字符串,以避免特定字符';输出中不允许使用?,java,Java,我有一个限制:我不能将一些字符(如&和=)保存在某个特殊的存储器中 问题是,我有一些字符串(用户输入)包含这些不允许的特殊字符,我希望将其保存到该存储中 我想把这样的字符串转换成另一个不包含这些特殊字符的字符串 我希望仍然能够转换回原始字符串,而不会产生歧义 你知道如何实现反转换吗?谢谢。将用户输入转换为十六进制并保存。并将十六进制值转换回字符串。使用这些方法 public static String stringToHex(String arg) { return String.for
&
和=
)保存在某个特殊的存储器中
问题是,我有一些字符串(用户输入)包含这些不允许的特殊字符,我希望将其保存到该存储中
我想把这样的字符串转换成另一个不包含这些特殊字符的字符串
我希望仍然能够转换回原始字符串,而不会产生歧义
你知道如何实现反转换吗?谢谢。将用户输入转换为十六进制并保存。并将十六进制值转换回字符串。使用这些方法
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));
输出
5065727261202620536F6E73佩雷拉父子公司
将用户输入转换为十六进制并保存。并将十六进制值转换回字符串。使用这些方法
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));
输出
5065727261202620536F6E73佩雷拉父子公司
已经在评论中指出了,但看起来是要走的路 在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);
评论中已经指出,但看起来是要走的路 在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);
使用URL编码?你能告诉我们这个特殊的存储是什么吗?某种将地图保存为字符串的适当方式,因此
&
和=
@shmosel,如果不允许的字符与&
不同,并且不是按照URL编码标准编码的,该怎么办?我不理解这个问题。你能更具体一点吗?使用URL编码吗?你能告诉我们这个特殊的存储是什么吗?一种将地图保存为字符串的适当方式,因此使用了&
和=
@shmosel,如果不允许的字符与&
不同,并且不是按照URL编码标准编码的呢?我不理解这个问题。你能说得更具体些吗?如果不允许的字符不同于&
,并且不是按照URL编码标准编码的呢?如果是这种情况,那么十六进制替代方案可能是更合适的解决方案。如果不允许的字符不同于&
,并且不是按照URL编码标准编码的呢?如果是这样的话在这种情况下,十六进制替代方案可能是更合适的解决方案。