2013-01-21 152 views
1

我收到java.ArrayIndexOutOfBounds ...我不知道爲什麼。Java拆分字符串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]); 
    } 

編輯:

java.lang.ArrayIndexOutOfBoundsException:1在 com.chriss.cipher.View.createPartControl(View.java:17)在 org.eclipse.ui.internal。 ViewReference.createPartHelper(ViewReference.java:386) 在 org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:240) 在 org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java: 595) at org.eclipse.ui.inter nal.PartPane.setVisible(PartPane.java:315)at org.eclipse.ui.internal.ViewPane.setVisible(ViewPane.java:534)at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart。的java:180) 在 org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:270) 在 org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder。 java:65)

+0

可能重複http://stackoverflow.com/questions/10695104/java-split-on-caret-not-working-is-this- A-特殊字符 – Shashi

回答

9

split接受正則表達式,其中^有特殊含義:字符序列的開始。這意味着你實際上並沒有像你期望的那樣分割字符串。與\逃離^標誌:

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

String.split(regex)接受正則表達式作爲參數,你需要在正則表達式的世界逃脫^用反斜槓,作爲^是一個特殊字符(元字符內)

String[] temp = TEST_STRING.split("\\^:_"); 
0
String[] temp = TEST_STRING.split("\\^:_"); 
0

private final static String 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("^:_"));