Подтвердить что ты не робот

Как разбирать числовую строку, содержащую запятые, в целое число в java?

Я получаю NumberFormatException, когда пытаюсь разобрать 265 858 с помощью Integer.parseInt().

Есть ли способ разобрать его в целое число?

4b9b3361

Ответ 1

Является ли эта запятая десятичным разделителем или эти два числа? В первом случае вы должны предоставить Locale в NumberFormat, который использует запятую как десятичный разделитель:

NumberFormat.getNumberInstance(Locale.FRANCE).parse("265,858")

В результате получается 265.858. Но используя US locale, вы получите 265858:

NumberFormat.getNumberInstance(java.util.Locale.US).parse("265,858")

Это потому, что во Франции они обрабатывают запятую как десятичный разделитель, а в США - как разделитель (тыс.).

Если это два числа - String.split() их и разобрать две отдельные строки независимо.

Ответ 2

Вы можете удалить ,, прежде чем разбирать его в int:

int i = Integer.parseInt(myNumberString.replaceAll(",", ""));

Ответ 3

Если это один номер и вы хотите удалить разделители, NumberFormat вернет вам номер. Просто убедитесь, что используете правильный язык, используя метод getNumberInstance.

Например, некоторые Locales заменяют запятую и десятичную точку на то, к чему вы можете привыкнуть.

Затем просто используйте метод intValue, чтобы вернуть целое число. Вам придется обернуть все это в блок try/catch, хотя для учета исключений Parse.

try {
    NumberFormat ukFormat = NumberFormat.getNumberInstance(Locale.UK);
    ukFormat.parse("265,858").intValue();
} catch(ParseException e) {
    //Handle exception
}

Ответ 4

Одним из вариантов было бы разделение запятых:

"265,858".replaceAll(",","");

Ответ 5

Первое, что нажимает на меня, считая, что это единственный номер,...

String number = "265,858";
number.replaceAll(",","");
Integer num = Integer.parseInt(number);

Ответ 7

Попробуйте следующее:

String x = "265,858 ";
    x = x.split(",")[0];
    System.out.println(Integer.parseInt(x));

ИЗМЕНИТЬ: если вы хотите округлить его до ближайшего целого:

    String x = "265,858 ";
    x = x.replaceAll(",",".");
    System.out.println(Math.round(Double.parseDouble(x)));