Как что лучший способ состоит в том, чтобы извлечь целую часть строки
Hello123
Как Вы получаете 123 части. Можно ли отсортировать взлома, это с помощью Сканера Java, там лучший путь?
Почему бы вам просто не использовать Регулярное выражение для соответствия той части строки, которую вы хотите?
[0-9]
Это все, что вам нужно, плюс все необходимые окружающие символы.
Посмотрите на http://www.regular-expressions.info/tutorial.html , чтобы понять, как работают регулярные выражения.
Изменить: я хотел бы сказать, что Regex может быть немного за бортом для этого примера , если действительно код, который опубликовал другой отправитель, работает ... но я все же рекомендую изучить Regex в целом, поскольку они очень мощные и пригодятся больше, чем я хотел бы признать (после ожидания несколько лет до давая им шанс).
Как объяснялось ранее, попробуйте использовать регулярные выражения. Это должно помочь:
String value = "Hello123";
String intValue = value.replaceAll("[^0-9]", ""); // returns 123
А затем вы просто конвертируете это в int (или Integer) оттуда.
Я считаю, что вы можете сделать что-то вроде:
Scanner in = new Scanner("Hello123").useDelimiter("[^0-9]+");
int integer = in.nextInt();
РЕДАКТИРОВАТЬ: Добавлено предложение useDelimiter от Карлоса
Если вы хотите конечная цифра, это будет работать:
import java.util.regex.*;
public class Example {
public static void main(String[] args) {
Pattern regex = Pattern.compile("\\D*(\\d*)");
String input = "Hello123";
Matcher matcher = regex.matcher(input);
if (matcher.matches() && matcher.groupCount() == 1) {
String digitStr = matcher.group(1);
Integer digit = Integer.parseInt(digitStr);
System.out.println(digit);
}
System.out.println("done.");
}
}
Я думал, что регулярное выражение Майкла - самое простое возможное решение, но если подумать, просто «\ d +» работает, если вы используете Matcher.find () вместо Matcher.matches ():
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Example {
public static void main(String[] args) {
String input = "Hello123";
int output = extractInt(input);
System.out.println("input [" + input + "], output [" + output + "]");
}
//
// Parses first group of consecutive digits found into an int.
//
public static int extractInt(String str) {
Matcher matcher = Pattern.compile("\\d+").matcher(str);
if (!matcher.find())
throw new NumberFormatException("For input string [" + str + "]");
return Integer.parseInt(matcher.group());
}
}