Пример регулярного выражения в java - PullRequest
1 голос
/ 09 марта 2020

Я хочу получить ввод от пользователя в виде строки, найти первые 2 числа, умножить их и заменить результат в тексте. Пользователь должен сначала ввести слово команды, команда: mul пример: mul hello 2 car? 7color 9goodbye5 результат должен быть: 14color 9goodbye5 Я написал этот код, но он не работает. Можете ли вы помочь мне в решении проблемы?

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Collusion {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();

        String patternString = "((\\d+).+(\\d+))";
        Pattern pattern = Pattern.compile(patternString);
        Matcher matcher = pattern.matcher(input);

        String text = matcher.group(0);
        String found = matcher.group(1);
        String thirdGroup = matcher.group(2);
        String fourthGroup = matcher.group(3);

        int firstNum = Integer.parseInt(thirdGroup);
        int secondNum = Integer.parseInt(fourthGroup);

        int integerMultiple = firstNum * secondNum ;
        String multiple = String.valueOf(integerMultiple);

        while (matcher.find()) {
            String result = text.replace(multiple , found);
            System.out.println(result );

            }
        }
    }

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Сделайте это следующим образом:

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Collusion {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter the command: ");
        String input = scanner.nextLine();
        Pattern p = Pattern.compile("\\d+");
        Matcher m = p.matcher(input);
        int count = 0, product = 1, index = 0;
        while (m.find() && count != 2) {
            product *= Integer.parseInt(m.group());
            count++;
            if (count == 2) {
                index = m.start() + m.group().length();
            }
        }
        System.out.println(product + input.substring(index));
    }
}

Пример прогона:

Enter the command: mul hello 2 car ?7color 9goodbye5
14color 9goodbye5

Я также рекомендую вам go через элегантное регулярное выражение Программа Test Harness от Oracle, чтобы узнать больше об эффективном использовании java .util.regex.Matcher .

0 голосов
/ 09 марта 2020

Очень трудно понять, какой именно шаблон вы ищете.

(mul)\D+(\d+)\D+(\d+)(.*) предоставит вам четыре группы (num1, num2, команда и остальная часть текста), для которых вы можете настроить свой код, хотя держу пари, что есть даже лучшие методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...