Построить char из строки

Я хочу, чтобы пользователь указывал диапазон Unicode через файл конфигурации XML. Например. они могут указывать 0100..017F в качестве диапазона. Для моего (Java) приложения, чтобы использовать этот диапазон char, мне нужно преобразовать XML-вход (String) в тип char. Любые идеи? #

например.

String input = "0100..017F"; // I can change format of input, if enables a solution
char from = '\u0100';
char to = '\u017f';

Спасибо.

Ответ 1

Если он всегда соответствует именно этому формату, этого будет достаточно:

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 диапазона может быть опущена и считается равной from.