如果s1
和s2
的最后四个字符子串相等,则实现一个返回true的方法。如果任一字符串的长度小于4,则该方法应返回false。
您可以使用方法s.substring(n, m)
生成从s
开始到结束于索引n
的{{1}}子字符串。
作为答案,我提供了以下代码,我只是想知道我是否以正确的方式做到了:
m-1
答案 0 :(得分:3)
如果您查看JavaDocs,您会注意到有两个substring
方法
对于您的情况,您可能只需要第一个,例如......
s1.substring(s1.length() - 4);
将返回String
的最后四个字符。您只需要在第二个String
上使用相同的技术并比较结果
我也不确定for-loop
试图实现的目标......
答案 1 :(得分:3)
忽略变量本身为s1lan
的{{1}}的拼写错误,我相信你几乎可以排除短于4个字符的字符串。请改为s1len
。
就s1.length()
循环而言,for
远远超出了您想要的范围。
您注意到(s1.substring() - 4.equals(s2.length() - 4))
没有指定长度,并返回s1.substring()
,因此String
没有意义。在String - int
函数中,您有equals()
这样就可以了,但您又可能无法比较您的预期。
int - int
会更接近你的意图,因为这会产生两个子串。
(s1.substring(s1len - 4)).equals(s2.substring(s2len - 4))
循环首先不会打击我。如上所述[{3}}和here,您现在已经没有参加考试,请尝试编译并在找到错误时修复错误。编写测试也有帮助,因为您可以检查它是否能满足您的需求。
答案 2 :(得分:1)
我做的事情如下:
public static boolean compareLast4 (String s1, String s2)
{
if (s1.length() < 4 || s2.length() < 4)
return false;
return s1.substring(s1.length() - 4).equals(s2.substring(s2.length()-4));
}
答案 3 :(得分:1)
public static boolean compareLast4(String one, String two){
if(one.length() != two.length() || one.length() < 4) return false;
one = one.substring(one.length()-4);
two = two.substring(two.length()-4);
return one.equals(two);
}
答案 4 :(得分:0)
使用正则表达式只需一行: - )
return s1.length() >=4 && s2.length() >= 4 ? s1.matches(".*?" + s2.substring(s2.length()-4))
: false;
答案 5 :(得分:0)
也许?
public static boolean compareLastFourCharacters(String first, String second) {
try {
first = first.substring(first.length() - 4);
return second.endsWith(first);
} catch (IndexOutOfBoundsException exception) {
return false;
}
}