Как я могу получить международное значение от строки такой как 423e
- т.е. строка, которая содержит число, но также и возможно букву?
Integer.parseInt()
сбои, так как строка должна быть полностью числом.
Если вы не говорите о числах с основанием 16 (для которых существует метод синтаксического анализа как шестнадцатеричный), вам необходимо явно выделить интересующую вас часть, а затем преобразовать ее. В конце концов, какова будет семантика чего-то вроде 23e44e11d в базе 10?
Регулярные выражения могут помочь, если вы точно знаете, что у вас есть только одно число. В Java есть встроенный анализатор регулярных выражений.
Если, с другой стороны, ваша цель состоит в том, чтобы объединить все цифры и вывести альфы, то это довольно просто сделать, перебирая символ за символом для построения строки с помощью StringBuilder, а затем анализируя ее.
Класс NumberFormat будет анализировать строку только до тех пор, пока она не достигнет не анализируемого символа:
((Number)NumberFormat.getInstance().parse("123e")).intValue()
, следовательно, вернет 123.
Просто просмотрите строку, как обычно, создавая 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');
}
Замените все нецифры на пробелы: оставшаяся строка содержит только цифры.
Integer.parseInt(s.replaceAll("[\\D]", ""))
Это также удалит нецифры между цифрами, так что "x1x1x"
станет 11
.
Если вам нужно подтвердить, что строка состоит из последовательности цифр (хотя бы одной), за которой, возможно, следует буква, то используйте следующее:
s.matches("[\\d]+[A-Za-z]?")
Возможно, получить размер строки, перебрать каждый символ в цикле и вызвать 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);