如何实现Integer.toString(char)的反向方法str2Char()?
如何实现char2Str的反向方法str2Char()?
问题背景
现有方法
char2Str通过调用Integer.toString(char)将字符转换为对应的数字字符串,代码如下:public static String char2Str(char c) { return Integer.toString(c); }补充说明:例如,
char2Str('ɮ')返回"622"。
请问如何实现上述方法的反向方法str2Char()?
我的解决方案
这其实很简单,咱们逆向原方法的逻辑来做就可以:原方法是把字符的Unicode码值转换成字符串,那反向操作就是把输入的数字字符串解析成整数,再强制转换回对应的char类型。
基础实现代码
public static char str2Char(String str) { // 将字符串解析为整数,再强转为char类型 return (char) Integer.parseInt(str); }
验证示例
比如调用str2Char("622"),就会返回字符'ɮ',完美对应原方法的示例结果,实现了反向转换。
额外的健壮性优化
不过有两点需要注意:
- 如果输入的字符串不是有效的十进制整数(比如包含非数字字符),
Integer.parseInt()会抛出NumberFormatException,你可以根据需求添加异常捕获或处理; - Java里的
char是16位无符号类型,有效范围是0到65535(也就是Character.MAX_VALUE的值)。如果输入的数值超出这个范围,直接强转会导致数值截断。如果需要严格校验输入的合法性,可以加上范围检查:public static char str2Char(String str) { int codePoint = Integer.parseInt(str); if (codePoint < 0 || codePoint > Character.MAX_VALUE) { throw new IllegalArgumentException("输入的数值超出char的有效范围:0~" + Character.MAX_VALUE); } return (char) codePoint; }
内容的提问来源于stack exchange,提问作者Kohei TAMURA
相关产品推荐
相关产品推荐

