Sino, pues se admiten ideas y sugerencias

Gracias.
| |||
![]() Pues creo que el título es suficientemente explicativo. Necesito validar una cadena de texto asegurandome que esta formada sólo por caracteres ASCII válidos y nose si existe alguna funcion ya hecha para ello. Sino, pues se admiten ideas y sugerencias ![]() Gracias. |
| |||
puedes tambien chequear los bits del string: ASCII regular solo usa los primeros 7 bits. Tendrias que crear una mascara [de bits] para probar esto. Me viene una pregunta: A que te refieres con ASCII validos? que mas podria contener una String mas que caracteres (que son simplemente bytes)? |
| ||||
Código:
Mirate http://www.programacion.com/java/art...xpresionesreg/ String input = "Yo soy una cadena de ASCII válido ¿ Pasa algo? 123 ... probando.. lo que no se me ocurre ES Ascii NO VÁLIDO"; // Pattern p = Pattern.compile("^\\a|^\\b^\\c...¿ se entiende no?...^\\Z"); Matcher m = p.matcher(input); if (!m.find()) { ... lo que sea ... } |
| |||
Cita: http://java.sun.com/j2se/1.4.2/docs/...x/Pattern.html [a-zA-Z] a through z or A through Z, inclusive (range) |
| |||
Hombre pues es que realmente no se tampoco muy bien a que se refieren con 'caracteres ASCII válidos', digamos que a mi me ha llegado el encargo de hacerlo :) . Pues voy a ver si encuentro un listado de los caracteres ASCII válidos, y con algo parecido a lo que me ha comentado dogdug, me hago una megaexpresion formal que los contenga o algo asi. Si la encuentro lo cuelgo aqui, por si alguien tiene que hacer algo parecido en el futuro. Gracias a todos por las respuestas. |
| |||
Bien pues he estado echando un vistazo a http://www.programacion.com/java/art...xpresionesreg/ y me he econtrado con lo siguiente: Cita: y aunque hay algunas 'teclas especiales' definibles entre llaves, no están todas las que son.Las expresiones regulares se rigen por una serie de normas y hay una construcción para cualquier patrón de caracteres. Una expresión regular sólo puede contener (aparte de letras y números) los siguientes caracteres: < \$, ^, ., *, +, ?, [, ], \. > Ademas he econtrado un listado de los caracteres ASCII, y suponiendo que ésos sean los válidos, no supondría la condicion que cito anteriormente una limitación insalvable para realizar esta validación a través de una expresion regular? Alguna alternativa? PD: En C podías coger un 'string' procesarlo carácter a carácter, pasando cada carácter a 'int' (lo que hacia era meter en un 'int' el numero ASCII corresponidiente) y luego comprobar que el numero está dentro del rango de caracteres válidos... |
| |||
En Java tambien lo puedes hacer, pero la cuestion es que si no sabes exactamente lo que ha aceptar o no tu programa, pues realizarlo sera un ejercicio de adivinacion ![]() Normalmente cuando te dicen eso se refieren a "numeros, letras y espaciadores", pero vamos, lo primero es que averigues exactamente lo que te piden. Es la primera regla de la informatica ![]() |
| |||
Jeje, si pero lo cierto es que a estas alturas, seré yo quien decida cuales son 'los caracteres ASCII válidos'. Y he decidido que son aquellos definidos en el estandar, que coinciden con los que podeis ver en el link anterior. Entre esos caracteres hay algunos que creo que no se pueden representar en expresiones normales. Asi que tengo dos alternativas: A) Tiro por lo fácil y valido solo aquello que pueda con expresiones formales. (no me gusta) B) Alguna alternativa que se os ocurra a alguno. (esta me mola mas) Gracias y un saludo. |
| |||
No se, pero en el enlace que te pasé arriba hay varias ideas: Cita: ... \p{ASCII} All ASCII:[\x00-\x7F] .. Cita: .... o parecidos. ... \p{Graph} A visible character: [\p{Alnum}\p{Punct}] .. |
| |||
Muchas gracias Vaya debi leer con mas detenimiento :$. Muchas gracias al final he hecho un pequeño test que lo pongo a continuación para que le sirva a otro que tenga el mismo problema que yo: Cita: Gracias de nuevo. public void makeTest() throws Exception { String input = "blañblaÏbla"; Pattern p = Pattern.compile("\\p{ASCII}"); Matcher m = p.matcher(input); if (!m.find()) System.out.println("error"); else System.out.println("cadena bien formada"); } |