正規表現を持つ2つの文字列を比較

マーベリック:

私は、間に別の区切り文字を持つ2つの文字列を、比較したいです。

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

私は2つの文字列が等しいかどうかを比較します。

私はこれを解決するためにJavaで正規表現を使用して試してみました、

        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");
        }

これは良いアプローチであるか、我々はいくつかの他の効率的な方法でこれを行うことができますか?

ダニ・Mesejo:

あなたは両方の文字列を変換することができ、正規の形式としての区切り文字のいずれかを選択して、標準的な、たとえば:

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));

出力

true

このソリューションは、区切り文字は一度だけ表示されていること、またはそのことについては区切り文字が交換可能であることを期待していることに注意してください。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=316291&siteId=1