Chvalov
@Chvalov

Спарсить String в массив int — Java, как реализовать?

Есть текстовое поле типа стринг:
[3389, 3410, 3430, 3450, 3470, 3500, 3520, 3540, 3760, 3780, 3810, 3830, 3850, 3970, 4000, 4140, 4160, 4180, 4210, 4220, 4250, 4300, 4320, 4340, 4360, 4380, 4400, 4420, 4430, 4440]

Стринг не массив, а просто строка
Как мне его спарсить и записать в массив типа int ?
  • Вопрос задан
  • 4249 просмотров
Решения вопроса 1
Chvalov
@Chvalov Автор вопроса
Помогите с таким вариантом

private String b = "[3389, 3410, 3430, 3450, 3470, 3500, 3520, 3540, 3760, 3780, 3810, 3830, 3850, 3970, 4000, 4140, 4160, 4180, 4210, 4220, 4250, 4300, 4320, 4340, 4360, 4380, 4400, 4420, 4430, 4440]";
            String[] items = b.replaceAll("\\[", "").replaceAll("\\]", "").split(",");

            int[] results = new int[items.length];

            for (int i = 0; i < items.length; i++) {
                try {
                    results[i] = Integer.parseInt(items[i].trim());
                } catch (NumberFormatException nfe) {};
            }

Log.d("TEST", Arrays.toString(results));

Вот что я получаю на выходе: [3389, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@nirvimel
Сначала строку разбиваем .split(",\s"); в массив строк. Создаем массив int той же длины. Потом в цикле обходим массивы и поэлементно преобразуем строки в числа numbres[i] = Integer.parseInt(strings[i]);

UPD: На самом деле это НЕ лучшее решение. Я как-то сразу проглядел, что эта строка - валидный объект в формате JSON, и парсится должна соответствующими инструментами. Правильные ответы дали: EugeneP2 и OnYourLips
Ответ написан
Комментировать
@protven
Чтож такие все ленивые.

stackoverflow.com/questions/7646392/convert-string...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы