【问题标题】:How to check if an EditText have an especific text/String如何检查 EditText 是否有特定的文本/字符串
【发布时间】:2013-07-03 03:37:01
【问题描述】:

大约 2 个月前我自己开始使用 JAVA,所以如果我写了一些愚蠢的东西,我很抱歉:pp

我想我所有的问题都在这里得到了解答,但是我没有找到我想要的。我的问题是:

我有一个带有单个 EditText 和一个按钮的应用程序,用户输入一个文本,按钮将对其进行分析。 我还有两盒,一盒苹果和橙子,一盒柠檬和土豆。

如果用户输入:“我想要苹果”,程序会说:“它在 Box 1 内”。 但是用户可以输入他想要的任何东西,但食物的名称永远不会改变,它将是苹果、橙子、土豆或柠檬。那么我该如何对程序说:如果(MyEditText 包含“苹果”),则显示框 1,否则如果(MyEditText 包含“柠檬”)显示框 2?

我做这个应用程序是因为我想了解更多关于 Android 开发的知识。希望我是清楚的。

对不起我的英语

【问题讨论】:

    标签: java android android-edittext


    【解决方案1】:

    我不是安卓开发者,但基于this answer,你可以尝试类似

    if(myEditText.getText().toString().contains("apple")){//...
    

    【讨论】:

    • 当我在 If else 中只使用一个条件时它工作得很好,我需要创建一个字符串来像 R9j 那样在各种条件下使用它。谢谢你的帮助!!
    • @MurilloHenrique 我假设由于您学习 java 2 个月,您必须知道 if(condition){ doIfConditionIstrue; }else{ doIfConditionIsFalse; } 所以我的答案中没有包括 else 部分,假设它是显而易见的。我的错误:)
    • @Pshemo 对不起,我不清楚。您所做的在 if else 中效果很好,但不适用于逻辑运算符,如果之前没有创建字符串,IDE 会给出错误,所以如果我执行以下操作,您所做的将不起作用: if (myEditText.getText( ).toString().contains("apple") && myEditText.getText.toString.contains("orange")){...
    • @MurilloHenrique 抱歉,但不应该有 myEditText.getText().toString().contains("orange") 而不是 myEditText.getText.toString.contains("orange") - 我在调用方法的地方添加了一些 ()。另外我不是说if (myEditTex...contains("apple") && myEditTex...contains("orange")),因为你已经提到了If (MyEditText contains "apple"){ show box 1} else if (MyEditText contains "lemon") {show box 2}
    • 没问题,很高兴知道 Java 在 Android 上也能正常工作:)
    【解决方案2】:

    我假设您不想在用户单击按钮时处理输入。你可以这样做

       btnOK.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View view) {
                    String userInput = MyEditText.getText().toString();
                    if(userInput.contains("apple")){
                        //Show it is inside box 1
                    }else if(userInput.contains("orange")){
                         //Show it is inside box 2
                    }
                }
            });
    

    这里的 btnOK 指的是你的按钮,不管你怎么称呼它。 至于显示信息,我不确定您所说的“我有 2 个盒子”是什么意思。如果用框表示 textView 已经有文本(“它在框 1 中”)(“它在框 2 中”)。您可以简单地更改可见性属性。视情况而定

    textView1.setVisibility(View.VISIBLE); //textview containing ("it is in box 1")
    textView2.setVisibility(View.INVISIBLE);   //textView containing ("it is in box 2")
    

    或者您可以通过填充 textView 来显示结果。 textView.setText("Your text");

    希望这会有所帮助。

    【讨论】:

    • 当我说“盒子”时,我指的是真实世界的盒子,每个盒子里有 2 种食物,该程序将允许用户找到每种食物的存放位置。对不起:)
    【解决方案3】:

    您可以使用indexOf 方法检查文本中是否存在特定字符串。或者,您可以使用contains 方法。如果您希望忽略大小写,请将其全部转换为大写并进行比较:

    EditText myEditText = (EditText) findViewById(R.id.edittext);
    String myEditTextValue = myEditText.getText().toString();
    String valueInUpperCase=myEditTextValue.toUpperCase() 
    
    if(valueInUpperCase.contains("APPLE")) {
        // show box 1
    } else if(valueInUpperCase.contains("LEMON")) {
        // show box 2
    }
    

    Java Docs for String

    希望对你有所帮助。

    【讨论】:

    • 让我看看我是否正确,如果我使用大写,Apple 将等于 AppPlE 等等?这对我有很大帮助!可能有人在某个地方使用了 indexOf,我会搜索它,这正是我的想法,比较 EditText 中的特定字符串。感谢您的帮助!
    【解决方案4】:

    试试这个

    String enteredText = editText.getText().toString();
    if(enteredText.contains("apple")){
        ......
    }
    else if(enteredText.contains("orange")){
        ......
    }
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-02-24
      • 2014-01-08
      • 1970-01-01
      • 2012-09-30
      • 2022-10-13
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      • 1970-01-01
      相关资源
      最近更新 更多