我想允许用户通过XML配置文件指定Unicode范围。例如。他们可以将0100..017F表示为范围。对于我的(Java)应用程序使用此char范围,我需要将XML输入(String)转换为char类型。有什么想法吗?#
E.g。
String input = "0100..017F"; // I can change format of input, if enables a solution
char from = '\u0100';
char to = '\u017f';
感谢。
答案 0 :(得分:4)
如果它总是与该格式完全匹配,那么这就足够了:
char from = (char)Integer.parseInt(input.substring(0, 4), 16);
char to = (char)Integer.parseInt(input.substring(6), 16);
更灵活的事情:
char from;
char to;
java.util.regex.Matcher m = java.util.regex.Pattern.compile(
"^([\\da-fA-F]{1,4})(?:\\s*\\.\\.\\s*([\\da-fA-F]{1,4}))?$").matcher(input);
if (!m.find()) throw new IllegalArgumentException();
from = (char)Integer.parseInt(m.group(1), 16);
if (m.group(2) != null) {
to = (char)Integer.parseInt(m.group(2), 16);
} else {
to = from;
}
每个字符允许1到4个十六进制数字,..
可能有空格,范围的to
部分可以省略,并假设等于{{1 }}