java怎么判断a字符串是否包含b字符串

怎么判断a字符串是否包含b字符串,用contians包含如果b字符串少写个a,变成bc-500也是包含,这怎么精确匹配变成不包含
String a="中国-广东-abc-500";
String b="abc-500";变成="bc-500"

public static void main(String[] args) {
        String a="中国-广东-abc-500";
        String b="abc-500";
        String c="bc-500";
        System.out.println(contians(a, b));
        System.out.println(contians(a, c));
    }
    static boolean contians(String a,String b){
        String[] a_arr = a.split("-");
        String[] b_arr = b.split("-");
        for (int i = 0; i < a_arr.length; i++) 
            if(a_arr[i].endsWith(b_arr[0]))
                for (String b_str : b_arr)
                    if(!a_arr[i++].equals(b_str))
                        return false;
        return true;
    }

如果你觉得调用api不能达到你的效果,你可以先传成字符数组,然后用kmp算法

在判断相等时加入判断条件:开头或 - 后的第一个字符不匹配就直接比较大字符串的下一个 - 后的内容,就不会出现两个- 之间包含匹配成功的问题

a.indexOf(b) a不包含b会返回-1的

题主的意思是:String a="中国-广东-abc-500";
String b="abc-500"; 如果用前面这个去 a 中匹配,应该是包含,而变成="bc-500"就应该展示不包含吗?

img