2013-12-12 48 views
3

當我的數組得到一個空的元素我有一個文本文件,它看起來像這樣:爲什麼我使用useDelimiter

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個位置有一個空值。我可以添加到我的分隔符刪除這個空值?

+0

定界符環相匹配。也許它應該是像'時間= ...' –

+0

我不希望分隔符匹配環,以便它被刪除? – LooMeenin

+0

我想忽略「rings = 5」或任何其他數字,例如「rings = 23」 – LooMeenin

回答

1

在這種情況下,它應該是不夠的,只是不爲空字符串添加到陣列中的你已經忽略了「環= X」部分

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