1

我得到 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 at com.chriss.cipher.View.createPartControl(View.java:17) at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:386) at org.eclipse.ui。 internal.ViewReference.createPart(ViewReference.java:240) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:315)在 org.eclipse.ui.internal.ViewPane.setVisible(ViewPane.java:534) 在 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)

4

5 回答 5

9

split接受正则表达式,其中^有特殊含义:字符序列的开头。这意味着您实际上并没有按预期拆分字符串。转义^标志\

TEST_STRING.split("\\^:_");
于 2013-01-21T13:46:19.600 回答
2

String.split(regex)接受正则表达式作为参数,您需要^用反斜杠转义,因为^在正则表达式世界中是一个特殊字符(元字符)

    String[] temp = TEST_STRING.split("\\^:_");
于 2013-01-21T13:46:21.403 回答
0
String[] temp = TEST_STRING.split("\\^:_");
于 2013-01-21T13:47:38.187 回答
0

private final static String TEST_STRING = "我的真棒字符串!^:_TEEEEEEEEEEEEEEST";

public void createPartControl(Composite parent){
    String[] temp = TEST_STRING.split("\\^:_");
    System.out.println(temp[0] + " ---> " + temp[1]);
}`enter code here`
于 2013-01-21T13:49:10.653 回答
0

您应该使用Pattern.quote(String). 引用所有可能的正则表达式特殊代码\

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

或者 - 在你的情况下 -

String[] temp = TEST_STRING.split(Pattern.quote("^:_"));
于 2013-01-21T14:08:05.203 回答