#java
#java
Вопрос:
Мне интересно for
, будет ли лучшим вариантом использование цикла для определения, находится ли целое число внутри строки. Но я не так уверен.
Комментарии:
1. @Holt Если я могу говорить за OP, это другой вопрос. Этот вопрос плохо написан, но в нем четко задается вопрос о том, как найти целое число в любом месте строки, а не если вся строка является целым числом.
2. Содержит только целое число и ничего больше или содержит текст, смешанный с целым числом?
3. @OP, нам понадобятся некоторые разъяснения. Что определяет целое число в строке? Цифры, за которыми не следует точка
.
? Должны ли цифры быть окружены пробелами? Вы можете проверить наличие в вашей строке целых чисел, подлежащих анализу, но обратите внимание, что вы также можете записывать части чисел с плавающей запятой.4.
if ("There's a number 123 in this string.".replaceAll("[^\d]", "").length() > 0) { System.out.println("Yup...there's a number in that there string."); } else { System.out.println("Nope...Nothing!"); }
Ответ №1:
Здравствуйте, существует ли конкретный логический способ определить, есть ли целое число в строке?
Простое решение — использовать регулярное выражение. Регулярное выражение d
означает последовательность из одного или нескольких цифровых символов.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) throws IllegalArgumentException {
String str = "Hello123World";
Matcher matcher = Pattern.compile("\d ").matcher(str);
if (matcher.find()) {
System.out.println("The integer inside the text is " matcher.group());
} else {
System.out.println("There is no integer inside the text.");
}
}
}
Вывод:
The integer inside the text is 123
Комментарии:
1. Я думаю, что это хорошее решение для вашего тестового примера, но я думаю, что нам нужно больше информации из OP. Как насчет шестнадцатеричных чисел? Ваш код может полностью пропустить их. Или что, если OP не хочет записывать числа с плавающей запятой? Ваш код будет
123.5
считаться двумя целыми числами. Операция просто не была достаточно ясной.