Как правильнее распарсить строку.
Строка вот такого типа: key:value|key:value|key:value
В итоге планирую получить HashMap<String, Integer>.
Пример: "Temperature:35"
1) split:
String example = "Terminator:35|SuperMen:53|Robbin:12";
String[] pairs = example.split("\\|");
Map<String, Integer> map = new HashMap<>();
for (String pair : pairs) {
String[] keyValue = pair.split(":");
map.put(keyValue[0], Integer.valueOf(keyValue[1]));
}
2) regex:
Map<String, Integer> map = new HashMap<>();
String example = "Terminator:35|SuperMen:53|Robbin:12";
Pattern pattern = Pattern.compile("(\\w+):(\\d+)");
Matcher matcher = pattern.matcher(example);
while (matcher.find()) {
map.put(matcher.group(1), Integer.valueOf(matcher.group(2)));
}
System.out.println(map);
3) в цикле, не сильно оптимально вышло, но
Map<String, Integer> map = new HashMap<>();
String example = "Terminator:35|SuperMen:53|Robbin:12";
StringBuilder key = new StringBuilder();
StringBuilder value = new StringBuilder();
boolean keyFlag = true;
boolean valueFlag = false;
for (char ch : example.toCharArray()) {
if (ch == ':') {
valueFlag = true;
keyFlag = false;
} else if (ch == '|') {
keyFlag = true;
valueFlag = false;
map.put(key.toString(), Integer.valueOf(value.toString()));
value = new StringBuilder();
key = new StringBuilder();
} else {
if (keyFlag) {
key.append(ch);
} else if (valueFlag) {
value.append(ch);
}
}
}
map.put(key.toString(), Integer.valueOf(value.toString()));
System.out.println(map);
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости