如何将CharSequence与String进行比较 - Android

时间:2013-09-09 02:47:35

标签: java android string charsequence

我有一个将文本放入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语句不起作用?

6 个答案:

答案 0 :(得分:15)

使用.equals.equalsIgnoreCase来比较字符串

     if(p.getDescs().toString().equals("trash"))

同时检查此

What is the difference between == vs equals() in Java?

答案 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());
    }

可能在运行时

上通过错误

以下链接可能会有所帮助

How to compare string values of CharSequence[]?

CharSequence vs String

答案 4 :(得分:1)

简介

CharSequence是一种常规类型,其中包含其他类型,例如StringStringBuilderSpannableString等。如果您要比较两个字符串,可以使用.equals(请参阅this question)。但是,如果您要将StringCharSequence进行比较,则必须确定要比较的内容,因为您可能会将StringStringBuilder进行比较或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要求的。