Si utilizza "."
come delimitatore, si dovrebbe rompere il significato speciale del .
char.
Il carattere .
nella regex è "qualsiasi carattere", quindi la divisione è solo suddivisione in base a "qualsiasi carattere", che ovviamente non è ciò che si sta cercando.
Usa "\\."
come delimitatore
Per ulteriori informazioni sulle classi di caratteri predefiniti che puoi have a look at the tutorial.
Per ulteriori informazioni sulle espressioni regolari sul generale (comprende il sopra) si può provare this tutorial
EDIT:
P.S. Quello che stai facendo (rimuovendo il numero) può essere ottenuto con un one-liner, usando il metodo String.replaceAll()
.
System.out.println(line.replaceAll("[0-9]+\\.\\s+", ""));
fornirà uscita
This is a test message
per il suo esempio di ingresso.
L'idea è: [0-9]
è qualsiasi cifra. - il +
indica che può esserci un numero qualsiasi di loro, che è maggiore di 0. Il numero \\.
è un punto (con rottura come sopra menzionato) e lo \\s+
occupa almeno uno spazio.
Viene sostituito da una stringa vuota.
Nota comunque, per stringhe come: "1. this is a 2. test"
- fornirà "questo è un test" e rimuoverà anche il "2.", quindi pensa attentamente se è davvero quello che cerchi.
Split si aspetta un'espressione regolare e '.' ha un significato speciale. – assylias
Per le dichiarazioni sembra strano. Intendi 'per (int k = 0; k
Javier