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

5 java string android charsequence

我有一个将文本放入arrayList的类.然后它将所有变量变成CharSequences,当我尝试将变量比较为一个String,例如=="test"; 它在这里不起作用是我用来获取变量的代码

class Item {
            String descs;

            public Item (String descs){

                 this.descs = descs;

                 }


            public CharSequence getDescs() {
                return descs;
            }
        }
Run Code Online (Sandbox Code Playgroud)

这是将其与String进行比较的代码

 if(p.getDescs().toString() == "trash"){

          descsView.setVisibility(View.GONE);

                            }

          else{
              descsView.setText(p.getDescs());

                            }
Run Code Online (Sandbox Code Playgroud)

我知道p.getDescs()等于垃圾,因为当它设置descsView的文本时,它被设置为垃圾.为什么第一个if语句不起作用?

Rag*_*dan 16

使用.equals.equalsIgnoreCase比较字符串

     if(p.getDescs().toString().equals("trash"))
Run Code Online (Sandbox Code Playgroud)

还检查一下

Java中== vs equals()之间有什么区别?


Sur*_*gch 5

介绍

CharSequence是一般类型,包括其它类型的像StringStringBuilderSpannableString,和其他。如果要比较两个字符串,则可以使用.equals(请参阅此问题)。但是,如果将a String与a 进行比较CharSequence,则必须决定要比较的是什么,因为您可能会将a String与a StringBuilder或a SpannableString或其他东西进行比较。

仅比较内容

如果您只想将a的内容(即文本)String与的内容进行比较CharSequence,而不必关心类型,则可以使用String.contentEquals()

String myString = "hello";
CharSequence myCharSequence = new StringBuilder("hello");

boolean areEqual = myString.contentEquals(myCharSequence); // true
Run Code Online (Sandbox Code Playgroud)

比较内容和类型

如果您还想确保除内容之外的类型相同,请使用String.equals()

String myString = "hello";
CharSequence myCharSequence = new StringBuilder("hello");

boolean areEqual = myString.equals(myCharSequence); // false
Run Code Online (Sandbox Code Playgroud)

这里还是相同的类型。

String myString = "hello";
CharSequence myCharSequence = "hello"; // String

boolean areEqual = myString.equals(myCharSequence); // true
Run Code Online (Sandbox Code Playgroud)

也可以看看