将给定的String start与另一个String进行比较

时间:2012-11-07 10:47:18

标签: java string

比较给定的String start与另一个String

的最佳方法是什么

示例:

  if("ABCD1234".startsWith("ABCD")){
        System.out.println("This is true ");
    }

    if("ABCD1234".substring(0,4).equalsIgnoreCase("ABCD")){
        System.out.println("This also true ");
    }

或者还有其他解决方案吗?

8 个答案:

答案 0 :(得分:5)

我认为startsWith()是最好的选择,因为它可以让任何读取您代码的人明白您的意图。如果您希望它不区分大小写,请在调用方法之前将两个值转换为相同的大小写。

String prefix = "ABCD";
prefix = prefix.toLowerCase();

if("ABCD1234".toLowerCase().startsWith(prefix)) {
    System.out.println("This is true ");
}

如果您需要格外小心,可能需要将Locale传递给toLowerCase(),或者至少一定要在两个字符串上调用它以确保您的代码passes the Turkey Test

答案 1 :(得分:3)

另一种解决方案是:

if (s.indexOf("ABCD") == 0) {
  ...
}

但是,我更喜欢你的第一选择。

答案 2 :(得分:1)

在不区分大小写的情况下使用equalsIgnoreCase可能会更好,但在子字符串之前你应该检查长度,它还会在内存字符串池中创建一个新的字符串。

另类的方式

    if("ABCD1234".substring(0,4).compareTo("ABCD")==0){
        System.out.println("This also true ");
    }
    if("ABCD1234".substring(0,4).compareToIgnoreCase("ABCD")==0){
        System.out.println("This also true ");
    }

但我认为startsWith是更好的选择,但要确保区分大小写。

答案 3 :(得分:1)

也可能:

"ABCD1234".matches("ABCD.*");

我头脑中有许多其他疯狂的解决方案:)恕我直言,“最好”的方式是使用你的第一个建议。

答案 4 :(得分:1)

您可以使用Apache Commons的StringUtils:

StringUtils.startsWith("abcdef", "abc") = true
StringUtils.startsWith("ABCDEF", "abc") = false
StringUtils.startsWithIgnoreCase("ABCDEF", "abc") = true

http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html

答案 5 :(得分:1)

老实说,首先你应该问自己“abcd”等于“ABCD”吗?

如果没有,那么我认为第一种解决方案要好得多,它更清洁和可读

如果你的衣服是肯定的,那么很明显,你不能使用第一个解决方案

答案 6 :(得分:1)

我更喜欢第二选择:

if("ABCD1234".substring(0,4).equalsIgnoreCase("ABCD")){
        System.out.println("This also true ");

在此,你还可以通过将你的字符串转换为LowerCase进行检查。

if(string.toLowerCase().startswith(string2))

答案 7 :(得分:0)

当我必须为工作编写Java应用程序时,我使用startsWith方法。