2016-10-10 2 views
2

출력을 지속적으로 실행하는 셸 명령의 출력을 검색하기 위해 inputstreamer를 사용하고 있습니다.Java : 문자열의 특정 부분을 배열에 저장

내가 여기를 인쇄하여 쉘 출력의 일부를 분리하는 데 성공했습니다 System.out.println(inputStr.substring(inputStr.lastIndexOf(" ")+1));

을 그러나, 나는 쉘 출력의 발현에 따라 두 arrrays 중 하나에 출력을 저장하고 싶습니다 . 내가 분리하고 12뿐만 아니라 모두 4488를 인쇄 할 수 있습니다, 위의 인쇄에서 IP 212.98.120.24.443 > 192.168.0.12.4588 psx 12

: 첫 번째로 IP 192.168.0.12.4588 > 212.98.120.24.443 psx 4488, 반대 :

우리가 두 개의 쉘이 구문을 다음과 outpust을 말해봐. 그러나 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 *>. *?")'-> 왼쪽. 와'tmp.matches (". *?> \\ s * 192 \\. 168 \\. 0 \\. \\ d + \\. \\ d +. *? –

+0

매우 유용합니다! 위에 기록한대로 값은 192.168.0 이후로 변경 될 수 있지만 그 문제를 해결했다고 생각합니다. 총소리를 내고 환호하는 – cbll

관련 문제