Necesito poder dividir una cadena de entrada por comas, punto y coma o espacio en blanco (o una combinación de los tres). También me gustaría tratar múltiples delimitadores consecutivos en la entrada como un único delimitador. Esto es lo que tengo hasta ahora:String.split() - haciendo coincidir la cadena vacía principal antes del primer delimitador?
String regex = "[,;\\s]+";
return input.split(regex);
Esto funciona, a excepción de cuando la cadena de entrada comienza con uno de los caracteres delimitadores, en cuyo caso el primer elemento de la matriz resultado es una cadena vacía. No quiero que mi resultado tenga cadenas vacías, por lo que algo como ",,,, ZERO;;; ONE, DOS ;," devuelve solo una matriz de tres elementos que contiene las cadenas en mayúsculas.
¿Hay una forma mejor de hacerlo que eliminando los caracteres iniciales que coinciden con mi reg-ex antes de invocar String.split?
¡Gracias de antemano!
No se publica como respuesta, ya que no recuerdo la API de expresiones regulares de Java, pero podría simplemente buscar cadenas de no delimitadores en lugar de dividir en delimitadores, por ejemplo usando una expresión regular como '[^,; \ s] +'. –
Pregunta aparentemente idéntica, más reciente pero con mejor respuesta aceptada: https://stackoverflow.com/questions/9389503/how-to-prevent-java-lang-string-split-from-creating-a-leading-empty-string –