Quiero determinar si una cadena es el nombre de un mes y quiero hacerlo con relativa rapidez. La función que se ha quedado atascado actualmente en mi cerebro es algo así como:¿Existe un método más rápido para hacer coincidir un nombre de cadena arbitraria con el mes en Java
boolean isaMonth(String str) {
String[] months = DateFormatSymbols.getInstance().getMonths();
String[] shortMonths = DateFormatSymbols.getInstance().getShortMonths();
int i;
for(i = 0; i<months.length(); ++i;) {
if(months[i].equals(str)) return true;
if(shortMonths[i].equals(str) return true;
}
return false;
}
Sin embargo, será de proceso mucho texto, pasa una cuerda a la vez a esta función, y la mayor parte del tiempo que va a obtener el el peor caso de pasar por todo el ciclo y devolver falso.
Vi otra pregunta que hablaba de un Regex para coincidir con un nombre de mes y un año que podría adaptarse para esta situación. ¿La Regex sería más rápida? ¿Hay alguna otra solución que pueda ser más rápida?
para empezar, puede mover/hacer meses, variables de miembros estáticos shortMonths (asignar solo una vez) .. –
una expresión regular debe ser rápida. Una máquina de estado hecha a medida más rápido. – SyntaxT3rr0r