2012-04-14 7 views
0

Kann mir jemand sagen, warum dieser Code ein Loch hat: array [0] [4]?Java-Array-Loch mit Regex

public class Random{ 

    public static void main (String []args){ 

     String [][] array={{"This is a test. A hole here"}}; 

     for(int i=0;i<array.length;i++){ 
      String temp=array[i][0]; 

      array[i]=temp.split("[\\:., ]"); 
     } 

     System.out.print(array[0][4]); 
    } 
} 

Doch wenn ich ein Pluszeichen an den Trennzeichen hinzuzufügen ("[\.:,] +"), Erhalte ich die richtige Ausgabe.

public class Random{ 

    public static void main (String []args){ 

     String [][] array={{"This is a test. A hole here"}}; 

     for(int i=0;i<array.length;i++){ 
      String temp=array[i][0]; 
      array[i]=temp.split("[\\:., ]+"); 
     } 

     System.out.print(array[0][4]); 
    } 
} 

Gibt es einen Grund, warum das Pluszeichen dieses Loch entfernt und dieses Problem löst? Ich bin offen für irgendwelche Vorschläge oder Kommentare. Ja, ich bin ein Neuling.

Antwort

1

Mit array[i]=temp.split("[\\:., ]"); Zeichenfolge wird hier gespaltet:

This is a test. A hole here 
    ^^^ ^^^^

So Sie einen leeren String an array[4] bekommen.

Mit array[i]=temp.split("[\\:., ]+"); wird "." Zu einem "Splitpunkt" kombiniert und deshalb wird es nicht dazwischen aufgeteilt.

+0

Vielen Dank !!!! – user1299661