Questo comportamento è non a causa dei diversi sistemi operativi, ma sono utilizzati probabilmente diverse versioni della JVM.
bug
Questo "cambiamento di comportamento" ha causato ad essere filed incorrectly per Java 8.
La documentazione è stata aggiornata per JDK 8, ed è anche discusso a lungo in this question, dove diviso in Java 8 rimuove stringhe vuote al inizio dell'array di risultati. Questo è il motivo per cui la stringa vuota aggiuntiva prima dello !
non viene creata (quindi la lunghezza di 2 invece di 3).
notare la differenza di documentazione per il metodo di split()
in Java 7 e Java 8 per la classe Pattern
, e la classe stringa (Java 7, Java 8), rispettivamente. Vedi la domanda originale collegata per ulteriori informazioni al riguardo.
Ho anche riprodotto questo problema su Java 7: sun-jdk-1.7.0_10 (ideone) e Java 8 sun-jdk-8u25 (ideone). See the Java versions here.Lo split di Java 8 non fornirà la stringa extra vuota nell'array, mentre lo split di Java 7 lo farà.
Questo non è perché il sistema è Linux o Windows, ma piuttosto la versione JVM. Puoi ricontrollare la versione della tua JVM con java -version
che cos'è la versione Java per entrambe le piattaforme? –
La nuova riga parte dell'output per Ubuntu? – Aderis
ti darebbe tre parti, la suddivisione eseguita su quella prima '!' E quella successiva a '!'. Non so come java prende la prima stringa vuota. –