java是否提供内置的静态String.Compare方法?
在比较字符串时,我不喜欢依赖实例方法,以免调用该方法的字符串恰好为空。在.NET中,我只使用静态String.Compare(String,String,bool)方法。java是否提供了类似的内置“空安全”字符串比较实用程序,还是我必须实现自己的工具?我想答案是否定的,您可能需要先检查一下java是否提供内置的静态String.Compare方法?,java,string,static,compare,Java,String,Static,Compare,在比较字符串时,我不喜欢依赖实例方法,以免调用该方法的字符串恰好为空。在.NET中,我只使用静态String.Compare(String,String,bool)方法。java是否提供了类似的内置“空安全”字符串比较实用程序,还是我必须实现自己的工具?我想答案是否定的,您可能需要先检查一下 if(myString != null && myString.equals("string")) { // do something } 正如其他人指出的那样,Apache C
if(myString != null && myString.equals("string")) {
// do something
}
正如其他人指出的那样,Apache Commons和Spring都有这样的功能:
不,JDK不包含这样的实用程序。但是,有几个外部库可以做到这一点。例如,
org.apache.commons.lang.StringUtils
提供空安全equals(String,String)
和equalsIgnoreCase(String,String)
。番石榴也有类似的效用 没有是这样的吗
public static boolean equals(String str1, String str2) {
return str1 == null ? str2 == null : str1.equals(str2);
}
有一个compare,返回一个int,还有一个equals,返回一个int
返回一个布尔值。如果您有一个字符串实例,它应该能够
执行。如果传递instance.equals(null),它将返回false。如果你的
实例为空,则您将获得一个空指针
public class App
{
public static void main( String[] args )
{
String myString = "test";
if(myString.equals(null))
{
System.out.println("Its NUll");
}else
{
System.out.println("Not Equal");
}
}
}
String确实提供了一个值,但它无论如何都不是空值安全的(即,在实际调用对象上的comapreTo方法之前,需要检查空值) 您可以这样编写自己的比较器
class StringComparator implements Comparator<String> {
public int compare(String s1, String s2) {
if (s1 != null) {
return s1.compareTo(s2);
} else {
if (s2 == null) {
return 0;
} else {
return -1;
}
}
类StringComparator实现Comparator{
公共整数比较(字符串s1、字符串s2){
如果(s1!=null){
返回s1.compareTo(s2);
}否则{
if(s2==null){
返回0;
}否则{
返回-1;
}
}
要验证属性,只需执行以下操作:
Comparator<String> comp = new Comparator<String>();
System.out.println(comp.compare(s1, s2);
Comparator comp=新的比较器();
系统输出打印LN(组件比较(s1,s2);
我实际上并没有测试代码,所以把它作为一个通用的例子。
好处是,即使您需要检查null值,也可以编写一次并多次使用它
您还可以查看String类内部。如果要比较的字符串之一是常量,则可以在处理
null
时使用equals
if("string".equals(mystring)) {
// do something
}
如果您有2个变量,则可以编写自己的静态方法:
public static boolean stringEquals(String s1, String s2) {
if (s1 == null) {
return s2 == null;
}
return s1.equals(s2);
}
这里有一个类似的问题 明智地建议使用ApacheCommons
ObjectUtils
类
result = ObjectUtils.compare(left, right);
库有这样的功能。我认为有一个apache StringUtils,android有TextUtils-1:问题是关于一个静态的、空安全的内置方法来比较字符串,而不是如何比较字符串。是的,我发现自己在每个新项目中都添加了这种类型的代码。似乎应该有一个
Strings.compare(左,右)
处理空检查
result = ObjectUtils.compare(left, right);