我有一个将文本放入arrayList的类。然后它将所有变量变成CharSequences,当我尝试将变量比较为一个String,例如==“test”;它在这里不起作用是我用来获取变量的代码
class Item {
String descs;
public Item (String descs){
this.descs = descs;
}
public CharSequence getDescs() {
return descs;
}
}
这是将其与String
进行比较的代码 if(p.getDescs().toString() == "trash"){
descsView.setVisibility(View.GONE);
}
else{
descsView.setText(p.getDescs());
}
我知道p.getDescs()等于垃圾,因为当它为descsView设置文本时,它被设置为垃圾。为什么第一个if语句不起作用?
答案 0 :(得分:15)
使用.equals
或.equalsIgnoreCase
来比较字符串
if(p.getDescs().toString().equals("trash"))
同时检查此
答案 1 :(得分:3)
您需要使用equals()
方法进行字符串比较...
if(p.getDescs().toString().equals("trash")){
descsView.setVisibility(View.GONE);
}
else{
descsView.setText(p.getDescs());
}
有关详细信息,请参阅How do I compare strings in Java?。
答案 2 :(得分:1)
如果descs是您的CharSequence变量:
descs.toString().equals("SomeString");
答案 3 :(得分:1)
最好的方法应该像你的
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)
将任何字符串varialbe与Object varialble
的值进行比较 注意:因为p.getDescs()
的值可能为空
所以使用
if(p.getDescs().toString().equals("trash")){
descsView.setVisibility(View.GONE);
}
else{
descsView.setText(p.getDescs());
}
以下链接可能会有所帮助
答案 4 :(得分:1)
CharSequence
是一种常规类型,其中包含其他类型,例如String
,StringBuilder
,SpannableString
等。如果您要比较两个字符串,可以使用.equals
(请参阅this question)。但是,如果您要将String
与CharSequence
进行比较,则必须确定要比较的内容,因为您可能会将String
与StringBuilder
进行比较或SpannableString
或其他。
如果您只想将String
的内容(即文字)与CharSequence
的内容进行比较,但您不关心该类型,那么您可以使用String.contentEquals()
。
String myString = "hello";
CharSequence myCharSequence = new StringBuilder("hello");
boolean areEqual = myString.contentEquals(myCharSequence); // true
如果您还想确保除内容之外的类型相同,请使用String.equals()
。
String myString = "hello";
CharSequence myCharSequence = new StringBuilder("hello");
boolean areEqual = myString.equals(myCharSequence); // false
这里又是相同的类型。
String myString = "hello";
CharSequence myCharSequence = "hello"; // String
boolean areEqual = myString.equals(myCharSequence); // true
答案 5 :(得分:1)
目前接受的答案
if(p.getDescs().toString().equals("trash"))
可以简化为
if("trash".contentEquals(p.getDescs()))
Suragch&#34; Intro&#34;答案给出了细节。这是直接将CharSequence与String进行比较的方法,这是OP要求的。