2014-05-09 2 views
-4
String s="a1b2c3";  
String sarr[]=s.split(".*[\\d].*");// 
for(String var:sarr) 
    System.out.println("S: "+var); 
    System.out.println(sarr.length); 

sarr이 비어 있습니까?s.split ("\ d") 자바 정규식 혼동

그리고 당신은 다음과 // 라인을 교체하는 경우 :

String sarr[]=s.split("\\d"); 

왜이 출력 a b c을 제공합니까?

+4

결과

표현

\d 일치 1, 23, 분할이 주위 수행되도록 (http://docs.oracle.com/javase/7/ docs/api/java/lang/String.html). – devnull

+0

'String # split'이 무엇을 알고 있습니까? – anubhava

+0

예. 하지만 난 정규식에 새로운 – Christopher

답변

0

javadocs 상태

분할 지정된 정규 표현에 일치하는이 캐릭터.

이 메서드는 주어진 식과 제한 인수가 0 인 인 두 개의 인수로 된 split 메서드를 호출하는 것처럼 작동합니다. 따라서 후행 빈 문자열은 결과 배열에 포함되지 않습니다.

표현 .*[\d].* 전체 문자열과 일치

는, 즉 a1b2c3 그래서 두 개의 빈 문자열이 방법으로 인해 한계로하지 않는 배열에 저장 될 수있는 남아 주위를 분할하는 것입니다 0

String sarr[]=s.split(".*[\\d].*", -1); 

를 인쇄하여 두 빈 문자열

S: 
S: 
2 

당신은 경기를 테스트 할 수를 보여줍니다

System.out.println(s.matches(".*[\\d].*")); 

출력은 true입니다. 그것은 [문서]를 읽을하는 데 도움이 [a, b, c]