Существует ли конкретный логический способ определить, есть ли целое число в строке?

#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 считаться двумя целыми числами. Операция просто не была достаточно ясной.