Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Separar cadena String y poner un par de requisitos.

Estas en el tema de Separar cadena String y poner un par de requisitos. en el foro de Java en Foros del Web. Buenas, antes de nada disculpen si me equivoco en modo de expresarme soy nuevo en esto, y estoy día a día tratando de mejorarme. Quiero ...
  #1 (permalink)  
Antiguo 14/05/2013, 17:17
Avatar de Elliugh  
Fecha de Ingreso: mayo-2013
Ubicación: Uruguay, Canelones
Mensajes: 5
Antigüedad: 11 años
Puntos: 0
Separar cadena String y poner un par de requisitos.

Buenas, antes de nada disculpen si me equivoco en modo de expresarme soy nuevo en esto, y estoy día a día tratando de mejorarme.

Quiero aclararles que ya vi este hilo http://www.forosdelweb.com/f45/separar-cadena-string-762862/ , pero mi problema es diferente, pero igual.

Bien, presento mi problema;

Al iniciar el programa este te pide que ingreses un código, pero tiene un par de requerimientos que son los siguientes:

Que tenga al menos:
  • 2 letras ([a-zA-Z) (como mínimo)
  • Un guion "-"
  • Un número (como mínimo)

He probado un par de intentos, pero ha sido un fracaso total

Espero que me puedan echar una mano, muchas gracias.

Edito: Añado un ejemplo como sería el String Código;

1G-Programacion

Saludos

Última edición por Elliugh; 14/05/2013 a las 18:19
  #2 (permalink)  
Antiguo 14/05/2013, 18:37
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Separar cadena String y poner un par de requisitos.

Usa regex para este problema.

Código Java:
Ver original
  1. import java.util.regex.Pattern;
  2. import java.util.regex.Matcher;
  3.  
  4.  
  5. public class Utils {
  6.  
  7.     public static void main(String[] args) {
  8.         String[] tests = new String[]{"ab", "ab1", "ab1-", "2a-b", "321321-asdfasdf-a-46546", ">?<", null};
  9.         for(String test : tests) {
  10.             System.out.println(test + " " + is_valid(test));
  11.         }
  12.     }
  13.  
  14.     public static boolean is_valid(String code) {
  15.  
  16.         if(code == null) return false;
  17.         Pattern p;
  18.         Matcher m;
  19.  
  20.         if(!code.contains("-")) return false;
  21.  
  22.         p = Pattern.compile("\\d");
  23.         m = p.matcher(code);
  24.         if(!m.find()) return false;
  25.  
  26.  
  27.         p = Pattern.compile("\\w(.*)\\w");
  28.         m = p.matcher(code);
  29.         if(!m.find()) return false;
  30.  
  31.  
  32.         return true;
  33.     }
  34. }
  #3 (permalink)  
Antiguo 14/05/2013, 19:23
Avatar de Elliugh  
Fecha de Ingreso: mayo-2013
Ubicación: Uruguay, Canelones
Mensajes: 5
Antigüedad: 11 años
Puntos: 0
Respuesta: Separar cadena String y poner un par de requisitos.

Muchísimas gracias me funciono a la perfección, por curiosidad se puede poner como condición que sea únicamente un guión solo?.

Edit:
- Surgió otro problema por desgracia, me acepta ejemplo el 222-22, debería saltarme el error de que no hay ninguna letra, a,b,c,d,e,f,g...

Saludos, y muchas gracias!

Última edición por Elliugh; 14/05/2013 a las 20:01
  #4 (permalink)  
Antiguo 14/05/2013, 20:28
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Separar cadena String y poner un par de requisitos.

Con un guion solo y ahora limitado a a-zA-Z

Código Java:
Ver original
  1. import java.util.regex.Pattern;
  2. import java.util.regex.Matcher;
  3.  
  4.  
  5. public class Utils {
  6.  
  7.     public static void main(String[] args) {
  8.         String[] tests = new String[]{"ab", "ab1", "ab1-", "2a-b", "321321-asdfasdf-a-46546", ">?<", null, "222-22"};
  9.         for(String test : tests) {
  10.             System.out.println(test + " " + is_valid(test));
  11.         }
  12.     }
  13.  
  14.     public static boolean is_valid(String code) {
  15.  
  16.         if(code == null) return false;
  17.         Pattern p;
  18.         Matcher m;
  19.  
  20.         p = Pattern.compile("-");
  21.         m = p.matcher(code);
  22.         int count = 0;
  23.         while (m.find()) count++;
  24.         if(count != 1) return false;
  25.  
  26.         p = Pattern.compile("\\d");
  27.         m = p.matcher(code);
  28.         if(!m.find()) return false;
  29.  
  30.  
  31.         p = Pattern.compile("[a-zA-Z](.*)[a-zA-Z]");
  32.         m = p.matcher(code);
  33.         if(!m.find()) return false;
  34.  
  35.  
  36.         return true;
  37.     }
  38. }
  #5 (permalink)  
Antiguo 15/05/2013, 05:19
Avatar de Elliugh  
Fecha de Ingreso: mayo-2013
Ubicación: Uruguay, Canelones
Mensajes: 5
Antigüedad: 11 años
Puntos: 0
Respuesta: Separar cadena String y poner un par de requisitos.

Muchas gracias, saludos

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:55.