从字符串构建char

时间:2014-02-16 16:20:34

标签: java char

我想允许用户通过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';

感谢。

1 个答案:

答案 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 }}