有 Java 编程相关的问题?

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

java在方法中使用regex输出

我正在使用正则表达式从文件中读取数据,但在使用正在读取的数据时遇到问题。 这是我的代码:

            File file = new File(eventsFile);
            try {
                Scanner sc = new Scanner(file);
                while(sc.hasNext()){
                    String eventLine = sc.nextLine();

                Pattern pattern = Pattern.compile("^Event=(?<event>[^,]*),time=(?<time>[^,]*)(,rings=(?<rings>[^,]*))?$");
                Matcher matcher = pattern.matcher(eventLine);
                while (matcher.find()) {
                    System.out.print(matcher.group("event") + " " + matcher.group("time"));
                    String eventName = matcher.group("event");
                    int time = Integer.parseInt(matcher.group("time"));

                    Class<?> eventClass = Class.forName(eventName);
                    Constructor<?> constructor = eventClass.getConstructor(long.class);
                    Event event = (Event) constructor.newInstance(time);
                    addEvent(event);

                        if (matcher.group(4) != null) {
                            System.out.println(" " + matcher.group(4));
                        } else {
                            System.out.println();
                        }
                    }
                }

打印语句只是暂时存在,以确保文件和正则表达式的扫描工作正常。我试图实现的是使用matcher.group(1)matcher.group(2)如下addEvent(new eventname(time)),其中eventnamematcher.group(1),而timematcher.group(2) 我尝试创建变量来存储group(1)和2,并在addEvent中使用它们,但这并没有真正起作用。那么,关于如何处理这样一个问题,有什么想法吗


编辑: 文本文件示例

Event=ThermostatNight,time=0
Event=LightOn,time=2000
Event=WaterOff,time=10000
Event=ThermostatDay,time=12000
Event=Bell,time=9000,rings=5
Event=WaterOn,time=6000
Event=LightOff,time=4000
Event=Terminate,time=20000
Event=FansOn,time=7000
Event=FansOff,time=8000

我试图达到这样一种情况,即我将为文本文件中的每一行运行addEvent函数,该文本文件将遵循以下示例addEvent(new ThermostatNight(0));


共 (0) 个答案