String en Java
Hola! Soy muy novata en esto de los foros pero espero que la experiencia sea satisfactoria... A ver si me podéis ayudar... Tengo una clase Vehiculo y un atributo es la matrÃcula, que es un String. La cuestión viene con que en el setter quiero controlar que la matrÃcula es correcta, para lo que en España tiene que ser 4 números y 3 letras... ¿cómo compruebo que los 4 primeros caracteres del String son números y los otros 3 son letras?
Un saludo! y graciassss por adelantado!
Un saludo! y graciassss por adelantado!
Hola mira esta funcion, creo que te funcionara, lo que hace analiza el caracter por caracter la cadena que se le pase, identifica si los primeros cuatro digitos son numeros con la funcion isNaN, cuando identifica que los primeros 4 digitos son numeros luego pasa a la validacion de los ultimos tres, tambien se utiliza la misma funcion para determinar si es ó no un numero, primeramente se analiza si la longitud que se le pasa como argumento a la funcion es igual a 7 de lo contrario devuelve false false, el valor devuelto son dos valores booleanos, el primero te indica si los primeros cuatro digitos son numeros y el segundo te indica si los ultimos tres numeros son diferente de numeros.
Es todo lo k se me ocurre, espero te sirva.
Saludo.
Thunder.
function analizar(d)
{
int i;
char caracter;
boolean numeros=false;
boolean validador_letras=false;
int contador=0;
if(d.length==7)
{
for(i=0; i< d.length;i++)
{
caracter=d.charAt(i);
if(isNaN(caracter)==false && contador < 5)
{
contador++;
if(contador==4)
{
validador_numeros=true;
}
}
if(contador > 4 && isNaN(caracter)==false)
{
validador_letras=false;
}
else
{
validador_letras=true;
}
}
}
return validador_numeros+ " " +validador_letras;
}
Es todo lo k se me ocurre, espero te sirva.
Saludo.
Thunder.
function analizar(d)
{
int i;
char caracter;
boolean numeros=false;
boolean validador_letras=false;
int contador=0;
if(d.length==7)
{
for(i=0; i< d.length;i++)
{
caracter=d.charAt(i);
if(isNaN(caracter)==false && contador < 5)
{
contador++;
if(contador==4)
{
validador_numeros=true;
}
}
if(contador > 4 && isNaN(caracter)==false)
{
validador_letras=false;
}
else
{
validador_letras=true;
}
}
}
return validador_numeros+ " " +validador_letras;
}
Hola, apenas estoy aprendiendo expresiones regulares y seguramente hay otra manera más óptima de hacerlo pero aquà te va una función que se ajusta a tu nececidad, te regresa true si la matrÃcula es correcta y false si no lo es:
public boolean esCorrecta(String cadena){
Pattern p = Pattern.compile("\d\d\d\d\w\w\w");
Matcher m = p.matcher(cadena);
if(m.matches()){
return true
}else{
return false;
}
}
Solo ocupas importar la libreria:
import java.util.regex.*;
saludos
public boolean esCorrecta(String cadena){
Pattern p = Pattern.compile("\d\d\d\d\w\w\w");
Matcher m = p.matcher(cadena);
if(m.matches()){
return true
}else{
return false;
}
}
Solo ocupas importar la libreria:
import java.util.regex.*;
saludos
creo que no funciona como deberÃa, estudiaré más las expresiones regulares y luego posteo de nuevo :P
Ahora si! jaja son mis primeros post y equivocandome
esto es lo que nececitas:
public boolean esCorrecta(String cadena){
Pattern p = Pattern.compile("\d+\d+\d+\d+[A-Za-z]+[A-Za-z]+[A-Za-z]");
Matcher m = p.matcher(cadena);
if(m.matches()){
return true;
}else{
return false;
}
}
esto es lo que nececitas:
public boolean esCorrecta(String cadena){
Pattern p = Pattern.compile("\d+\d+\d+\d+[A-Za-z]+[A-Za-z]+[A-Za-z]");
Matcher m = p.matcher(cadena);
if(m.matches()){
return true;
}else{
return false;
}
}
¬¬ es sin los +
Pattern p = Pattern.compile("\\d\\d\\d\\d[A-Za-z][A-Za-z][A-Za-z]");
Pattern p = Pattern.compile("\\d\\d\\d\\d[A-Za-z][A-Za-z][A-Za-z]");
¬¬ es sin los +
Pattern p = Pattern.compile("\d\d\d\d[A-Za-z][A-Za-z][A-Za-z]");
Pattern p = Pattern.compile("\d\d\d\d[A-Za-z][A-Za-z][A-Za-z]");
un poco más optimizado :P
public boolean esCorrecta(String cadena){
Pattern p = Pattern.compile("\d\d\d\d[A-Za-z][A-Za-z][A-Za-z]");
Matcher m = p.matcher(cadena);
return m.matches();
}
public boolean esCorrecta(String cadena){
Pattern p = Pattern.compile("\d\d\d\d[A-Za-z][A-Za-z][A-Za-z]");
Matcher m = p.matcher(cadena);
return m.matches();
}
boolean Error(String matricula)
{
int cont=0;
for(int i= 0 ;i<matricula.Length();i++)
{
int exit=0;
if(i<4)
{
for(int j= (int)'A'; j<=26 && exit != 1;j++)
{
if(matricula.charAt(i) == (char)j )
{
cont++;
exit=1;
}
}
}
else
{
for(int k=0;k<=9 && exit != 1;k++)
{
if(matricula.charAt(i) == k)
{
cont++;
exit=1;
}
}
}
}
if(cont == 6)
return true;
else
return false;
}
Toma el valor verdadero si esta correctamente escrita la matricula........................................................................................no se si tiene algun error porque no tengo en este momento java asi que cualquier erro me lo comunicas ya.....
{
int cont=0;
for(int i= 0 ;i<matricula.Length();i++)
{
int exit=0;
if(i<4)
{
for(int j= (int)'A'; j<=26 && exit != 1;j++)
{
if(matricula.charAt(i) == (char)j )
{
cont++;
exit=1;
}
}
}
else
{
for(int k=0;k<=9 && exit != 1;k++)
{
if(matricula.charAt(i) == k)
{
cont++;
exit=1;
}
}
}
}
if(cont == 6)
return true;
else
return false;
}
Toma el valor verdadero si esta correctamente escrita la matricula........................................................................................no se si tiene algun error porque no tengo en este momento java asi que cualquier erro me lo comunicas ya.....
