2013-01-21 3 views
1

java.ArrayIndexOutOfBounds가 나타납니다 ... 이유를 모르겠습니다.자바 스플릿 문자열 ArrayIndexOutOfBounds

private final static String TEST_STRING = "My awesome string !^:_TEEEEEEEEEEEEEST"; 

    public void createPartControl(Composite parent){ 
     String[] temp = TEST_STRING.split("^:_"); 
     System.out.println(temp[0] + " ---> " + temp[1]); 
    } 

EDIT :

java.lang.ArrayIndexOutOfBoundsException 1 com.chriss.cipher.View.createPartControl (View.java:17)에서 org.eclipse.ui.internal 에서. org.eclipse.ui.internal.WorkbenchPartReference.getPart (WorkbenchPartReference.java에서 ViewReference.createPartHelper org.eclipse.ui.internal.ViewReference.createPart (ViewReference.java:240)에서 (ViewReference.java:386) : 595) at org.eclipse.ui.inter org.eclipse.ui.internal.ViewPane.setVisible (ViewPane.java:534) at org.eclipse.ui.internal.presentations.PresentablePart.setVisible (PresentablePart. 자바 : org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select에서 org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select (PresentablePartFolder.java:270) (LeftToRightTabOrder 180) . 자바 : 65) ^는 특별한 의미가 어디에

+0

가능한 중복 http://stackoverflow.com/questions/10695104/java-split-on-caret-not-working-is-this- 특수 문자 – Shashi

답변

9

split는 정규 표현식을 받아 들인다 : 문자 순서의 시작. 즉, 실제로 문자열을 원하는대로 분할하지 않습니다. \으로 ^ 기호를 탈출 :

TEST_STRING.split("\\^:_"); 
2

String.split(regex)가 매개 변수로 정규식을 받아, 당신은 정규식 세계에서 ^로, 백 슬래시 ^을 탈출하기 위해 필요한 것은 (메타 뜯)

String[] temp = TEST_STRING.split("\\^:_"); 
0
String[] temp = TEST_STRING.split("\\^:_"); 
특수 문자를하다
0

개인 최종 정적 문자열 TEST_STRING = "내 멋진 문자열!^: _TEEEEEEEEEEEEEST";

public void createPartControl(Composite parent){ 
    String[] temp = TEST_STRING.split("\\^:_"); 
    System.out.println(temp[0] + " ---> " + temp[1]); 
}`enter code here` 
0

당신은 \ 모든 잠재적 정규식 특수 코드를 인용 Pattern.quote(String)를 사용해야합니다.

String[] deviceParts = deviceID.split(Pattern.quote(".")); 

또는 - 귀하의 경우 -의

String[] temp = TEST_STRING.split(Pattern.quote("^:_"));