Comparación de dos cuerdas con expresiones regulares

Maverick:

Quiero comparar dos cadenas, que tiene un delimitador diferente en el medio.

Ejemplo

String s1 = "ZZ E5 - Pirates of carribean";
String s2 = "ZZ E5 : Pirates of carribean"; 

Quiero comparar si dos cadenas son iguales.

He intentado usar expresiones regulares en Java para resolver esto,

        String pattern = "(.*)[:-](.*)";
        // Create a Pattern object
        Pattern r = Pattern.compile(pattern);

        // Now create matcher object.
        Matcher m = r.matcher(s1);
        Matcher m1 = r.matcher(s2);

        if (m1.find()&&m.find()) {
            System.out.println("Found value: " + m.group(1));
            System.out.println("Found value: " + m.group(2));
            System.out.println("Found value: " + m1.group(1));
            System.out.println("Found value: " + m1.group(2));

            System.out.println(m.group(1).contentEquals(m1.group(1)));
            System.out.println(m.group(2).contentEquals(m1.group(2)));
        } else {
            System.out.println("NO MATCH");
        }

Es este un enfoque bien o podemos hacer esto de alguna otra manera eficiente?

Dani Mesejo:

Se podría convertir ambas cadenas a una forma canónica por la elección de uno de los delimitadores como canónica , por ejemplo:

String s1 = "ZZ E5 - Pirates of carribean";
String s2 = "ZZ E5 : Pirates of carribean";

String canonicalS1 = s1.replaceAll("-", ":");
String canonicalS2 = s2.replaceAll("-", ":");

System.out.println(canonicalS1.equals(canonicalS2));

Salida

true

Tenga en cuenta que esta solución espera que los delimitadores aparecen sólo una vez, o para el caso de que los delimitadores son intercambiables.

Supongo que te gusta

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