怎么判断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"就应该展示不包含吗?