2013-04-06 2 views
1

빠른 질문 : 마침표 (.)를 구분 기호로 사용하여 IP 주소 (예 : 192.168.0.1)를 분할하려고합니다. 나는 그것을 올바르게 얻는 것처럼 보일 수 없다. 나는 그것이 내 두뇌 기능 장애인지 아닌지를보기 위해 여러 가지 시나리오를 시험해 보았지만, 마침표 대신 숫자 사이에 공백을 넣을 때 모든 것이 잘되는 것처럼 보였다. 어떻게 성공적으로 수행 할 수 있습니까?분모가 작동하지 않는 분할 문자열

다음은 스크립트를 실행하는 데 사용하는 스크립트입니다. 내 지식에 의문을 제기하기 전에

String ipAddress = "10.0.0.2"; 
String[] split = ipAddress.split("."); 
//It's supposed to split into four parts and each part needs to be assigned to a var 
String Part1 = split[0]; 
String Part2 = split[1]; 
String Part3 = split[2]; 
String Part4 = split[3]; 
//Just to make sure that it worked... 
System.out.println(Part1 + " " + Part2 + " " + Part3 + " " + Part4); 

, 나 자신에게 새로운 자바 기능을 배우고 때때로 나는 그것이 작동 할 수 없습니다.

Stay Awesome!

답변

1

문자열 자신을 구문 분석하려고하지 않고 당신이 적절한 표현을 얻으셔서, 자바의 IP 주소를 다루는 클래스가있다 :

InetAddress a = InetAddress.getByName("10.0.0.2"); 
byte[] b = a.getAddress(); 
System.out.println(b[0]+" "+b[1]+" "+b[2]+" "+b[3]); 
+0

두 가지 옵션 (이 답변과 [user_CC의 답변] (http://stackoverflow.com/a/15851375/1065197))은 가능한 중복 질문의 답변에 포함되어 있습니다. –

+0

감사합니다! 이것은 split() 함수보다 더 잘 작동합니다! –

1

String[] split = ipAddress.split("\\."); 

split() 방법은 정규 표현식이 아닌 문자열을 사용하려고하고 DOT는 정규 표현식에서 특별한 의미를 갖습니다. 따라서 이중 슬래시로 이스케이프 처리해야합니다.

또는 당신은 시도 Pattern.quote

String[] split = ipAddress.split(Pattern.quote(".")); 
+0

감사합니다. 이것은 정확히 내가 원했던 것입니다. –

1

사용할 수있는이

String parts[] = ipAddress.split("\\.") //this is double back slash 
0

사용 String parts[] = ipAddress.split("\\.")