Страницы

Поиск по вопросам

четверг, 2 января 2020 г.

Перевод строки в массив цифр с помощью Stream API

#java


На вход в метод будет приходить строка, эквивалентная по формату значению переменной
string.
Как сделать Stream над переменной string, который сможет определять, является ли
символ этой строки цифрой, и если да, то создавать массив int[] из этих цифр (каждая
цифра - новый элемент int[] массива)? Чтобы в итоге можно было сделать return этого
массива цифр.

Я написал код, который переводит строку в массив int[], но мне нужно это сделать
через Stream:

String string = "[1, 6, 7, 2, 1, 9, 2, 49, 54, 47]";
List integers = new ArrayList<>();
char[] chars = string.toCharArray();
for (int i = 0; i < string.length(); i++) {
    if (Character.isDigit(chars[i])) {
        integers.add(Character.getNumericValue(chars[i]));
    }
}
System.out.println(Arrays.toString(integers.stream().mapToInt(i -> i).toArray()));

    


Ответы

Ответ 1



Эквивалент вашего кода. String string = "[1, 6, 7, 2, 1, 9, 2, 49, 54, 47]"; int[] ints = string.chars() .filter(Character::isDigit) .map(Character::getNumericValue) .toArray(); Но это скорее всего не то что вы хотите, 49 превратится в 4 и 9. Если хочется числа из строки то ответ: int[] ints = Stream.of(string.substring(1, string.length() - 1) .split(",")) .map(String::trim) .mapToInt(Integer::parseInt) .toArray();

Комментариев нет:

Отправить комментарий