Как прочитать число типа int из строки, содержащей цифры и буквы? - PullRequest
0 голосов
/ 05 августа 2020

У меня есть строка, содержащая последовательность букв и чисел типа int A1B12C21D24. Я хочу создать hashMap с ключами, буквами из строки и значениями - числами, следующими за этими буквами. Итак, мои пары должны быть A 1 B 12 C 21 D 24 Я читаю первую букву с charAt (0), однако число может быть любым количеством символов, поэтому единственная идея, которую я придумал, - это взять символы один на единицу, чтобы увидеть, являются ли они числами, сохраните его в другой переменной int, которую я умножу на 10 и добавлю следующее число, пока снова не дойду до буквы char. Однако это похоже на большое количество циклов, и я не был уверен, есть ли более эффективный способ сделать это

Ответы [ 2 ]

2 голосов
/ 05 августа 2020

Например, вы можете сделать это так:

Map<String, String> map = new HashMap<>();
Pattern pattern = Pattern.compile("(\\D+)(\\d+)");
Matcher matcher = pattern.matcher("A1B12C21D24 ");
while (matcher.find()) {
    map.put(matcher.group(1), matcher.group(2));
}
System.out.println(map);

Вывод:

{A=1, B=12, C=21, D=24}
1 голос
/ 05 августа 2020

Вы можете попробовать String[] pairs = InputString.split("(?=[A-Z])"), а затем выполнить итерацию по массиву с помощью String[] letterAndNumber = pairs[i].split("(?<=[A-Z])")

Тогда вам просто нужно будет сохранить его соответственно в HashMap.

Подробнее о мощном регулярном выражении в этом ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...