Ответ 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
.