比较给定的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 ");
}
或者还有其他解决方案吗?
答案 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)
如果没有,那么我认为第一种解决方案要好得多,它更清洁和可读
如果你的衣服是肯定的,那么很明显,你不能使用第一个解决方案
答案 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方法。