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: org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:386) の com.chriss.cipher.View.createPartControl(View.java:17) で 1。 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) at 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

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`
于 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 に答える
0
String[] temp = TEST_STRING.split("\\^:_");
于 2013-01-21T13:47:38.187 に答える