有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的正则表达式示例

我想从用户那里获取字符串类型的输入 然后找到前两个数字,将它们相乘,并将结果替换为文本 用户应该首先输入命令词,命令是:mul 示例:mul hello 2汽车?7颜色9道别5 结果应该是:14颜色9道别5 我写了这段代码,但它不起作用 你能帮我解决这个问题吗

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 );

            }
        }
    }

共 (1) 个答案

  1. # 1 楼答案

    按如下方式操作:

    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
    

    我还建议您通过Oracle提供的一个优雅的regex Test Harness程序来了解java.util.regex.Matcher的有效使用