Получите интервал от Строки, также содержащей буквы, в Java

Как я могу получить международное значение от строки такой как 423e - т.е. строка, которая содержит число, но также и возможно букву?

Integer.parseInt() сбои, так как строка должна быть полностью числом.

28
задан DisgruntledGoat 26 February 2010 в 00:49
поделиться

5 ответов

Если вы не говорите о числах с основанием 16 (для которых существует метод синтаксического анализа как шестнадцатеричный), вам необходимо явно выделить интересующую вас часть, а затем преобразовать ее. В конце концов, какова будет семантика чего-то вроде 23e44e11d в базе 10?

Регулярные выражения могут помочь, если вы точно знаете, что у вас есть только одно число. В Java есть встроенный анализатор регулярных выражений.

Если, с другой стороны, ваша цель состоит в том, чтобы объединить все цифры и вывести альфы, то это довольно просто сделать, перебирая символ за символом для построения строки с помощью StringBuilder, а затем анализируя ее.

10
ответ дан 28 November 2019 в 02:15
поделиться

Класс NumberFormat будет анализировать строку только до тех пор, пока она не достигнет не анализируемого символа:

((Number)NumberFormat.getInstance().parse("123e")).intValue()

, следовательно, вернет 123.

21
ответ дан 28 November 2019 в 02:15
поделиться

Просто просмотрите строку, как обычно, создавая int, но игнорируйте нечисловые символы:

int res = 0;
for (int i=0; i < str.length(); i++) {
    char c = s.charAt(i);
    if (c < '0' || c > '9') continue;
    res = res * 10 + (c - '0');
}
4
ответ дан 28 November 2019 в 02:15
поделиться

Замените все нецифры на пробелы: оставшаяся строка содержит только цифры.

Integer.parseInt(s.replaceAll("[\\D]", ""))

Это также удалит нецифры между цифрами, так что "x1x1x" станет 11.

Если вам нужно подтвердить, что строка состоит из последовательности цифр (хотя бы одной), за которой, возможно, следует буква, то используйте следующее:

s.matches("[\\d]+[A-Za-z]?")
79
ответ дан 28 November 2019 в 02:15
поделиться

Возможно, получить размер строки, перебрать каждый символ в цикле и вызвать isDigit () для каждого символа. Если это цифра, добавьте ее в строку, которая собирает только числа, перед вызовом Integer.parseInt ().

Примерно так:

    String something = "423e";
    int length = something.length();
    String result = "";
    for (int i = 0; i < length; i++) {
        Character character = something.charAt(i);
        if (Character.isDigit(character)) {
            result += character;
        }
    }
    System.out.println("result is: " + result);
2
ответ дан 28 November 2019 в 02:15
поделиться
Другие вопросы по тегам:

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