[英]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.