2013-01-21 153 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("^:_"));