Tengo la siguiente declaración if:
String newStr4 = strr.split("2012")[0];
if (newStr4.startsWith("Mon")) {
str4.add(newStr4);
}
Quiero que incluya, startsWith
Mon
Tues
Weds
Thurs
Friday
etc. ¿Existe una forma sencilla de hacerlo cuando se utilizan cadenas? Lo intenté ||
pero no funcionó.
java
string
if-statement
FredBones
fuente
fuente
"Mon||Tues"
etc.? ¿O usastenewStr4.startsWith("Mon")||newStr4.startsWith("Tues") ...
? De cualquier manera, defina "no funcionó".Respuestas:
Quieres decir esto:
O podría usar una expresión regular:
fuente
Además de las soluciones presentadas ya, puede usar la biblioteca Apache Commons Lang:
Actualización: la introducción de varargs en algún momento hace que la llamada sea más sencilla ahora:
fuente
Nadie ha mencionado
Stream
hasta ahora, así que aquí está:fuente
s -> newStr4.startsWith(s)
se puede reemplazar pornewStr7::startsWith
para ser más claroUna solución simple es:
Una solución más elegante sería:
fuente
Por supuesto, tenga en cuenta que su programa solo será útil en países de habla inglesa si detecta fechas de esta manera. Es posible que desee considerar:
Desde allí, puede usar .startsWith o .matches o cualquier otro método que otros hayan mencionado anteriormente. De esta forma obtendrá la configuración regional predeterminada para jvm. Siempre puede pasar la configuración regional (y tal vez por defecto a la configuración regional del sistema si es nula) también para ser más robusto.
fuente
Debe incluir el todo
str.startsWith(otherStr)
para cada elemento, ya que||
solo funciona con expresiones booleanas (verdadero o falso).Hay otras opciones si tiene muchas cosas que verificar, como las expresiones regulares , pero tienden a ser más lentas y las expresiones regulares más complicadas son generalmente más difíciles de leer.
Un ejemplo de expresión regular para detectar abreviaturas de nombres de días sería:
fuente
Cuando dice que intentó usar OR, ¿cómo lo intentó exactamente? En su caso, lo que deberá hacer sería algo así:
fuente