Удаление всех не цифр из строки - PullRequest
0 голосов
/ 08 января 2019

Я использую калькулятор, в котором можно вводить любой символ. Тем не менее, я хочу извлечь числа из того, что набрано, и сложить их вместе.

Примером ввода может быть:

"//;\n1;2"

Здесь результат должен быть 3.

Я пытаюсь заменить все нецифровые символы в строке пустыми.

string.replaceAll("\\D", "");

Когда я печатаю строку после этого, я получаю:

//;
1;2

Когда я пытаюсь сложить цифры вместе, я получаю исключение:

java.lang.NumberFormatException: For input string: ""

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Например ..

примечание - это будет работать только для чисел в интервале (вкл.) <0; 9>

    String input = "//;\n1;2";

    //contains digits only
    String tmp = input.replaceAll("\\D", "");
    System.out.println("tmp is: " + tmp);

    //convert String to char array 
    char[] charsArray = tmp.toCharArray();
    int sum = 0;

    //iterate over and summarize
    for (int i = 0; i < charsArray.length; i++) {
        //needs to be there otherwise you will get crazy numbers 
        sum = sum + Character.getNumericValue(charsArray[i]);
    }

    System.out.println("sum is: " + sum);
0 голосов
/ 08 января 2019

Строки неизменны. Если у вас есть объект String, его содержимое никогда не изменится.

Чтобы предоставить вам другую строку, replaceAll () возвращает новую строку с запрошенными изменениями, как и все другие подобные методы. Он не меняет содержимое строки, что невозможно.

Вам нужно сделать:

string = string.replaceAll("\\D", "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...