Java 将给定字符串与另一个字符串进行比较

Java 将给定字符串与另一个字符串进行比较,java,string,Java,String,比较给定字符串和另一个字符串的最佳方法是什么 例如: if("ABCD1234".startsWith("ABCD")){ System.out.println("This is true "); } if("ABCD1234".substring(0,4).equalsIgnoreCase("ABCD")){ System.out.println("This also true "); } 或者还有其他解决方案吗?另一种解决方案是

比较给定字符串和另一个字符串的最佳方法是什么

例如:

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

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

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

另一种解决方案是:

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

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

另一个解决方案是:

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

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

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

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

对于大小写不敏感的等于,使用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在这里是更好的选择,但要确保区分大小写。

在不区分大小写的equals中使用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在这里是更好的选择,但要确保区分大小写。

我认为这是最好的选择,因为它可以让阅读代码的人清楚地了解您的意图。如果希望它不区分大小写,请在调用该方法之前将两个值转换为同一大小写

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

if("ABCD1234".toLowerCase().startsWith(prefix)) {
    System.out.println("This is true ");
}
如果您想格外小心,您可能希望将区域设置传递到小写,或者至少确保在两个字符串上都调用它,以确保您的代码。

我认为这是最好的选择,因为它可以让阅读代码的任何人都清楚地了解您的意图。如果希望它不区分大小写,请在调用该方法之前将两个值转换为同一大小写

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

if("ABCD1234".toLowerCase().startsWith(prefix)) {
    System.out.println("This is true ");
}
如果您想格外小心,您可能希望将区域设置传递给小写,或者至少确保在两个字符串上都调用它,以确保您的代码。

也可能:

"ABCD1234".matches("ABCD.*");
我脑海中还有许多其他疯狂的解决方案:我认为最好的方法是使用你的第一个建议。

也可能:

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

我脑海中还有许多其他疯狂的解决方案:我认为最好的方法是使用您的第一个建议。

您可以使用Apache Commons中的StringUtils:

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

您可以使用Apache Commons中的StringUtils:

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

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

若并没有,那个么我认为第一个解决方案要好得多,它更清晰易读


如果你的回答是肯定的,那么很明显,你不能使用第一种解决方案。老实说,首先你应该问问自己,abcd等于abcd吗

若并没有,那个么我认为第一个解决方案要好得多,它更清晰易读


如果您的回答是肯定的,那么显然,您不能使用第一种解决方案,我更喜欢第二种选择:

if("ABCD1234".substring(0,4).equalsIgnoreCase("ABCD")){
        System.out.println("This also true ");
在这种情况下,您还可以通过将字符串转换为小写来进行检查

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

我更喜欢第二选择:

if("ABCD1234".substring(0,4).equalsIgnoreCase("ABCD")){
        System.out.println("This also true ");
在这种情况下,您还可以通过将字符串转换为小写来进行检查

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

语言是:java。问题被标记为java。对不起,我没有喝咖啡。但是是的,我仍然会使用startsWith!语言是:java。问题被标记为java。对不起,我没有喝咖啡。但是是的,我仍然会使用startsWith!什么是最好的方式。。。定义好。什么是最好的方式。。。定义好。为什么要使用第三方库来实现预定义库中已有的功能?关于第一种方法,您是对的,因为ABCD1234.startswithabound更清晰。但是如果你不得不忽略这个例子,我更喜欢使用StringUtils.startWithIgnoreCaseAbcdef,因为它的意图更清楚,而且读起来比例如ABCD1234.substring0,4.equalSignoreCaseAbj要好得多。您是对的,仅为一行代码添加依赖项可能有些夸张。但我的经验是,当你必须在系统的一个地方处理字符串时,你可能也会在其他地方处理它。@Felix。。同意最后一行,因此也同意最后第二行:为什么要使用第三方库来实现预定义库中已有的功能?第一种方法是正确的,因为ABCD1234.startsWithABCD更清晰。但是如果你不得不忽略这个例子,我更喜欢使用StringUtils.startWithIgnoreCaseAbcdef,因为它的意图更清楚,而且读起来比例如ABCD1234.substring0,4.equalSignoreCaseAbj要好得多。您是对的,仅为一行代码添加依赖项可能有些夸张。但我的经验是,当你必须在系统的一个地方处理字符串时,你可能也会在其他地方处理它。@Felix。。同意最后一行,因此也同意最后第二行: