Java:将字符串的特定部分存储到数组中

问题描述:

我使用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

你可以做这样的事情:

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