2013-07-15 5 views
5

Ecco mio codice:String Lunghezza campo mostra 1 anche la matrice è vuota dopo chiamata scissione da virgola (,)

serialNumbers = ""; 

String[] serialArray = serialNumbers.split(","); 

int arrayLength = serialArray.length; 

arrayLength dimostra 1 anche non hanno alcun valore serialArray. Mi aspettavo che la lunghezza dovrebbe restituire 0 in questo caso.

+1

Si consideri il caso in cui la stringa è: ','. Quanti risultati ti aspetteresti che restituisca, quindi? Quando rispondi, penso che capirai perché questo restituisce 1. –

+0

O anche una stringa non vuota senza virgole. "stringa". Cosa dovrebbe comportare? –

risposta

13

Da the doc:

Se l'espressione non corrisponde alcuna parte dell'input poi il risultante matrice ha un solo elemento, cioè questa stringa.

Si noti che questo documento sia dal metodo String.split(String, int), che viene richiamato da String.split(String)

+0

Quindi, in questo caso, come controllerò se l'array è vuoto o non ha valore? Ho bisogno di tornare se ci sono dei valori o meno. – ray

+3

@ray Questo sarà ** mai ** il caso dopo aver usato 'String.split()', quindi è un test inutile. Qual è il vero problema che stai cercando di risolvere? –

+0

@AnthonyGrist dovevo fare come: if (arrayLength == 0) {return null; } else {continue doing rest} – ray

5

Split restituisce sempre almeno un elemento.

Nel caso in cui non venga trovato un separatore, l'intero input viene restituito in una matrice a elemento singolo.

+0

+1 per spiegare la ragione. – commit

0

serialArray contiene [""], che è 1 elemento

0

Se si guarda alla realizzazione di String.class (vedi frammento di seguito). Qui off mostra il conteggio delle partite e this è la stringa attualmente in fase di elaborazione per l'operazione di divisione e la tua stringa è serialNumbers = "";. Ecco perché sta restituendo un oggetto in serie.

 // If no match was found, return this 
     if (off == 0) 
      return new String[]{this}; 
0

TestArgs public class {

public static void main(String[] args) { 
    String checkString = ""; 

    System.out.println("" + splitString(checkString)); 



} 

public static int splitString(String checkString) { 
    if (checkString.indexOf(",") != -1 || !"".equals(checkString)) { 
     System.out.println("hello " + checkString.split(",").length); 
     return checkString.split(",").length; 
    } else { 
     return 0; 
    } 
} 

}

Problemi correlati