繁体   English   中英

Java拆分字符串ArrayIndexOutOfBounds

[英]Java splitting string 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:com.chriss.cipher.View.createPartControl(View.java:17)为org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:386)为org.eclipse.ui的1。在org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)处的internal.ViewReference.createPart(ViewReference.java:240)在org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:315)处在org.eclipse.ui.internal.presentations上的org.eclipse.ui.internal.ViewVisible(ViewPane.java:534)在org.eclipse.ui.internal.presentations上的PresentablePart.setVisible(PresentablePart.java:180) org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)上的.util.PresentablePartFolder.select(PresentablePartFolder.java:270)

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

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

String.split(regex)接受regex作为参数,您需要用反斜杠转义^ ,因为regex世界中的^是特殊字符(元字符)

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

私有最终静态字符串TEST_STRING =“我的超棒字符串!^:_ TEEEEEEEEEEEEEST”;

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

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

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

或-就您而言-

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM