为什么在使用useDelimiter时我在数组中得到一个空元素

时间:2013-12-12 00:27:29

标签: java

我有一个看起来像这样的文本文件:

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

我有这样的方法:

public void extractDataIntoArray() {
    array = new ArrayList<String>();    
    while (s.hasNext()) {
        s.useDelimiter("(,.*)|[^0-9]+");
        array.add(s.next());
        System.out.println(array);
    }
}

我想只返回时间值,例如“0”,“2000”等。在文本文件的第五行,我想完全忽略“rings = 5”。此外,“rings =”的值不会总是5,它会改变,但我仍然想忽略它。使用上面的正则表达式,我得到了这个输出:

  

[0,2000,10000,12000,9000,6000,4000,20000,7000,8000]

请注意,在数组的第6个位置有一个空值。我可以添加到分隔符中以删除此空值?

1 个答案:

答案 0 :(得分:1)

在这种情况下,只要不将空字符串添加到数组就足够了,因为你已经忽略了“ring = X”部分

while (s.hasNext()) {
    s.useDelimiter("(,.*)|[^0-9]+");
    String next = s.next();
    if (next.length() > 0)
        array.add(next);
    System.out.println(array);
}