public class Test { public static void main(String[] args) throws Exception { String s1 = "/program/rest/user/forgotPwd/"; String s2 = "/program/rest/user/forgetPwd/test"; System.out.println(s1.startsWith(s2)); System.out.println(s2.startsWith(s1)); } }
В обоих случаях напечатано false.Есть объяснения?
false
Строки не так идентичны, как вы думаете.Первая строка содержит forgotPwd, а вторая содержит forgetPwd.
forgotPwd
forgetPwd
потому что в первой строке у вас есть forgotPwd, а во второй forgetPwd. Разница составляет o и e
o
e
У вас есть опечатка в s2 , в которой написано:
String s2 = "/ program / rest / user / ForgotPwd / test";
и он должен сказать:
Это естественно. Посмотрите поближе на свои строки.
String s1 = "/program/rest/user/forgotPwd/"; String s2 = "/program/rest/user/forgetPwd/test";
s1 имеет слово forgotPwd, s2 имеет forgetPwd. Разница в 1 букву.
случай 1 очевиден. случай 2 ложен, потому что s1 «забыл», а s2 «забыл».
Ваш s1 не является частью s2.forgotPwd
Проверьте это.
String s1 = "/program/rest/user/forgotPwd/"; String s2 = "/program/rest/user/forgotPwd/test"; System.out.println(s1.startsWith(s2)); System.out.println(s2.startsWith(s1));
Вывод:
false true
Может быть, вы могли бы попытаться указать индекс в форме
"Foobar".startsWith("bar", 3)
, который возвращает истину. После проверки ваших опечаток, конечно.