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。。同意最后一行,因此也同意最后第二行: