2016-10-10 58 views
2

我使用inputstreamer來檢索連續運行的shell命令的輸出以提供輸出。Java:將字符串的特定部分存儲到數組中

我已經設法在這裏打印出來的外殼輸出的一部分隔離:System.out.println(inputStr.substring(inputStr.lastIndexOf(" ")+1));

不過,我想輸出存儲在以下兩種arrrays的,這取決於外殼輸出的表達。

說,我們有如下這樣的語法兩個殼outpust:IP 192.168.0.12.4588 > 212.98.120.24.443 psx 4488作爲第一個,和相反:IP 212.98.120.24.443 > 192.168.0.12.4588 psx 12

從上面的打印,我可以隔離和打印都4488以及12。但是,如果192.168.0.x.x是第一個IP,則值4448將存儲在特定數組中。同樣,如果> 192.168.0.x.x位於另一端,我想將值12存儲在另一個數組中。

我該怎麼辦?

+0

你可以使用'regex' ... – brso05

+0

我對正則表達式閱讀起來了。你將如何使用正則表達式來區分'>'192.168.0.XX.XXX的哪一側? xx.xxx可以在任何給定的時間改變。只有192.168.0是恆定的:) – cbll

+0

你可以解析像(ip,left_side,right_side,psx,number)這樣的對象的整個輸入,然後比較你的左邊是否以192.168.0開頭 – Erik

回答

2

你可以做這樣的事情:

public static void main(String[] args) 
{ 
    String temp = "IP 212.98.120.24.443 > 192.168.0.12.4588 psx 12"; 
    if(temp.matches(".*192\\.168\\.0\\..*>.*")) 
    { 
     System.out.println("1st"); 
     //your code here 
    } 
    else if(temp.matches(".*>.*192\\.168\\.0\\..*")) 
    { 
     System.out.println("2nd"); 
     //your code here 
    } 
} 
+0

我也用'tmp .matches(「。*?192 \\。168 \\。0 \\。\\ d + \\。\\ d + \\ s *>。*?」)' - > left。和'tmp.matches(「。*?> \\ s * 192 \\。168 \\。0 \\。\\ d + \\。\\ d +。*?」)' - > right。 –

+0

非常有幫助!如上所述,值可能會在192.168.0後發生變化,但我認爲你已經解決了這個問題。給它一個鏡頭,歡呼 – cbll

相關問題