Java代码 - 比较最近4个字母

时间:2014-06-02 01:07:33

标签: java

如果s1s2的最后四个字符子串相等,则实现一个返回true的方法。如果任一字符串的长度小于4,则该方法应返回false。

您可以使用方法s.substring(n, m)生成从s开始到结束于索引n的{​​{1}}子字符串。

作为答案,我提供了以下代码,我只是想知道我是否以正确的方式做到了:

m-1

6 个答案:

答案 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;
    }
}