Java: leer argumentos con “*”
Necesito hacer un programa que obtenga argumentos opcionales desde la línea de comando. En caso de que se muestre la bandera -regex
, necesito leer la siguiente expresión regular y guardarla en el programa como una cadena. Algo como: java Main -regex *.java
Lo que tengo ahora se ve así:
public static void main(String[] args)
...
if (args[i].equals("-regex")) {
String myRegex = args[i+1];
System.out.println(myRegex);
i++;
i++;
<p>}
...
Pero, como ejecuto el programa desde la carpeta donde hay algunos archivos como file1.java
y file2.java
, el programa imprime “file1.java”. ¿Qué puedo hacer para obtener mi variable con “*.java”?
Cuando intenté imprimir todos los argumentos, con:
for (String arg:args) {
System.out.println(arg);
}
me da:
-regex
file1.java
file2.java
Lo cual me lleva a la conclusión de que necesito leer los argumentos de manera diferente…
davy.ai
Para leer adecuadamente el argumento de la expresión regular, puedes modificar tu código para usar el índice del array
args
en lugar de usar explícitamente el índicei+1
. Aquí tienes una versión actualizada de tu código:Este código itera sobre todos los argumentos en
args
, verificando si el argumento actual es-regex
. Si lo es, verifica si existe el siguiente argumento (i+1 < args.length
) y lo asigna amyRegex
. Si no se proporciona el argumento de la expresión regular, el código mostrará un mensaje informando al usuario.Ten en cuenta que este código asume que el argumento de la expresión regular siempre se proporcionará después de la bandera
-regex
. Si necesitas admitir una sintaxis de línea de comandos más flexible, es posible que necesites usar una biblioteca más avanzada para el análisis de argumentos, como Apache Commons CLI.