Получить int из String, также содержащий буквы, в Java

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

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

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

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

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

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

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

Это также приведет к удалению цифр без цифр между цифрами, поэтому "x1x1x" станет 11 .

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

 s.matches("[\\d]+[A-Za-z]?") 

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

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

будет возвращать 123.

Вы также можете использовать сканер:

 Scanner s = new Scanner(MyString); s.nextInt(); 

Возможно, получите размер строки и цикл через каждый символ и вызовите 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); 

Просто пройдите через строку, создав 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'); } 
  • Joda-Time: какая разница между периодом, интервалом и продолжительностью?
  • В чем разница между Swing и AWT?
  • Как я могу объединить два объекта HashMap, содержащие одни и те же типы?
  • Инициализация нескольких переменных для одного и того же значения в Java
  • Имеются ли выражения Thread.sleep (0) и Thread.yield ()?
  • В Java, как проверить, содержит ли строка подстроку (игнорируя регистр)?
  • Java: JProgressBar (или эквивалент) в заголовке вкладки JTabbedPane
  • Java new File () говорит FileNotFoundException, но файл существует
  • Учитывая, что последний блок не заполнен неправильно
  • В критических разделах Java, на что я должен синхронизироваться?
  • Как создать новый список на Java
  • Давайте будем гением компьютера.