2016-10-10 12 views
2

私はinputstreamerを使用して、出力を継続的に実行するシェルコマンドの出力を取得しています。Java:文字列の特定の部分を配列に格納する

私はここでそれを印刷することにより、シェルの出力の一部を分離することに成功しました:System.out.println(inputStr.substring(inputStr.lastIndexOf(" ")+1));

しかし、私はシェルの出力の表現に応じて、2つarrraysのいずれかに出力を保存したいのですが。最初のものとしてIP 192.168.0.12.4588 > 212.98.120.24.443 psx 4488、反対:

は、我々はこの構文を次の2つのシェルoutpustを持っていると言う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 ( "。*?192 \\。168 \\。0 \\。\\ d + \\。\\ d + \\ s *>。*?") ' - > left。 '?> \\ s * 192 \\。168 \\。0 \\。\\ d + \\。\\ d +。*?") ' - ' right。 –

+0

非常に役に立ちます!上に書いたように、値は192.168.0の後で変更されるかもしれませんが、私はあなたがそれを回避すると思います。それを撃つ、歓声をあげる – cbll

関連する問題