Java 如何将CharSequence与String进行比较-Android
我有一个类将文本放入arrayList。然后,当我尝试将变量与字符串(如==“test”)进行比较时,它会将所有变量转换为charsequence;它不起作用这里是我用来获取变量的代码Java 如何将CharSequence与String进行比较-Android,java,android,string,charsequence,Java,Android,String,Charsequence,我有一个类将文本放入arrayList。然后,当我尝试将变量与字符串(如==“test”)进行比较时,它会将所有变量转换为charsequence;它不起作用这里是我用来获取变量的代码 class Item { String descs; public Item (String descs){ this.descs = descs; } publi
class Item {
String descs;
public Item (String descs){
this.descs = descs;
}
public CharSequence getDescs() {
return descs;
}
}
这是将其与字符串进行比较的代码
if(p.getDescs().toString() == "trash"){
descsView.setVisibility(View.GONE);
}
else{
descsView.setText(p.getDescs());
}
我知道p.getDescs()等于trash,因为当它为descsView设置文本时,它被设置为trash。那么为什么第一个if语句不起作用呢?如果descs是您的CharSequence变量:
descs.toString().equals("SomeString");
使用
.equals
或.equalsIgnoreCase
比较字符串
if(p.getDescs().toString().equals("trash"))
也检查一下这个
您需要使用
equals()
方法进行字符串比较
if(p.getDescs().toString().equals("trash")){
descsView.setVisibility(View.GONE);
}
else{
descsView.setText(p.getDescs());
}
有关更多信息,请参阅。最好的方法应该是这样
if("trash".equals(p.getDescs()){
descsView.setVisibility(View.GONE);
}
else{
descsView.setText(p.getDescs());
}
或者,如果比较不区分大小写,则
if("trash".equalsIgnoreCase(p.getDescs()){
descsView.setVisibility(View.GONE);
}
else{
descsView.setText(p.getDescs());
}
功能
<String>.equalus(Object)
运行时可能会出现错误
以下链接可能会有所帮助
简介
CharSequence
是一种通用类型,包括其他类型,如String
、StringBuilder
、SpannableString
,以及其他类型。如果要比较两个字符串,可以使用.equals
(请参阅)。但是,如果要将字符串
与字符序列
进行比较,则必须确定要比较的内容,因为您可能要将字符串
与字符串生成器
或SpannableString
或其他内容进行比较
仅比较内容
如果只想将字符串的内容(即文本)与字符序列的内容进行比较,而不关心类型,则可以使用String.contentEquals()
比较内容和类型
如果您还想确保除了内容之外,这些类型都是相同的,那么请使用String.equals()
这是同样类型的
String myString = "hello";
CharSequence myCharSequence = "hello"; // String
boolean areEqual = myString.equals(myCharSequence); // true
另见
当前接受的答案
if(p.getDescs().toString().equals("trash"))
可以简化为
if("trash".contentEquals(p.getDescs()))
苏拉奇的“介绍”回答给出了细节。这是一种直接将CharSequence与字符串进行比较的方法,这是OP所要求的。我重新打开这个问题,因为它不处理CharSequence
。当.equals
返回false时存在有效的情况,这不是因为内容不同,而是因为一个是字符串
,另一个是字符串生成器
。我以前不知道contentEquals()
。这里很有用。加一。
String myString = "hello";
CharSequence myCharSequence = "hello"; // String
boolean areEqual = myString.equals(myCharSequence); // true
if(p.getDescs().toString().equals("trash"))
if("trash".contentEquals(p.getDescs()))