Pattern.matches () contra una matriz de caracteres sin el molde de cadena en java

humbleDev:

Guión

Tengo que comprobar un patrón de expresión contra un array de caracteres ( char[]). No se me permite a emitir el array de caracteres en una cadena, debido a consideraciones de seguridad. Pattern.matches de Java () método está diseñado para tener un patrón y una cadena. Además, el patrón de expresión se pasa a mí de otra fuente, y va a cambiar (no es constante).

Esto no funciona:

// This pattern comes from another source, that I do not control. It may change.
String pattern = "^(.)\\1+$"; 

char[] exampleArray = new char[4];
    exampleArray[0] = 'b';
    exampleArray[1] = 'l';
    exampleArray[2] = 'a';
    exampleArray[3] = 'h';

// This should return true, for this pattern, but I cannot pass in a char[].
boolean matches = Pattern.matches(pattern, exampleArray); 

pensamientos

He tratado de deconstruir el patrón de expresión y examinar la matriz para cada parte del patrón, pero la lógica condicional requerida para interpretar cada parte del patrón que me esconda. Por ejemplo: Supongamos que el patrón contiene algo así "(.){5,10}". Entonces sólo tengo que comprobar la char[]longitud. Sin embargo, si contiene "^B(.){5,10}X", entonces tengo que hacer algo muy diferente. Se siente como que hay demasiadas posibilidades de deconstruir efectivamente el patrón de expresión y de cuenta para cada posibilidad (que es exactamente por qué Siempre he usado Pattern.matches()).

Pregunta

¿Cuál sería la forma más eficiente de la comprobación de un patrón de expresión contra un array de caracteres sin poner en la matriz de caracteres en una cadena, o la creación de una cadena?

Joni:

Pattern.matches acepta una CharSequence general. Se puede utilizar por ejemplo CharBuffer de java.nio en lugar de cadena.

boolean matches = Pattern.matches(pattern, CharBuffer.wrap(exampleArray));

CharBuffer.wrap no creará una copia adicional de la contraseña en la memoria, por lo que de todas las opciones es la más segura.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=394613&siteId=1
Recomendado
Clasificación