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))
,其中eventname
是matcher.group(1)
,而time
是matcher.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) 个答案