比较Java中的字符串

时间:2011-01-15 15:24:02

标签: java android string

我试图比较两个edittext框的值。我想要的是比较passw1 = passw2。因为我的代码现在正在比较我输入的两个字符串,因为我无法比较它们。

 final EditText passw1= (EditText) findViewById(R.id.passw1);
 final EditText passw2= (EditText) findViewById(R.id.passw2);
 Button buttoks = (Button) findViewById(R.id.Ok);
      buttoks.setOnClickListener(new OnClickListener() {    

    public void onClick(View v) {       

     if (passw1.toString().equalsIgnoreCase("1234") && passw2.toString().equalsIgnoreCase("1234")){
      Toast.makeText(getApplication(),"Username and password match", Toast.LENGTH_SHORT).show();
      }
    else {
        Toast.makeText(getApplication(),"Username and password doesn't match", Toast.LENGTH_SHORT).show();
      }
     }   }); 

8 个答案:

答案 0 :(得分:34)

使用==运算符将比较字符串的引用而不是字符串本身。

好的,你必须toString()可编辑。我加载了一些处理这种情况之前的代码。

String passwd1Text = passw1.getText().toString();
String passwd2Text = passw2.getText().toString();

if (passwd1Text.equals(passwd2Text))
{
}

答案 1 :(得分:16)

[编辑] 我之前犯了一个错误,因为要获取文本,你需要使用.getText()。toString()。

以下是一个完整的工作示例:

package com.psegina.passwordTest01;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

public class Main extends Activity implements OnClickListener {
    LinearLayout l;
    EditText user;
    EditText pwd;
    Button btn;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        l = new LinearLayout(this);
        user = new EditText(this);
        pwd = new EditText(this);
        btn = new Button(this);

        l.addView(user);
        l.addView(pwd);
        l.addView(btn);
        btn.setOnClickListener(this);

        setContentView(l);
    }

    public void onClick(View v){
        String u = user.getText().toString();
        String p = pwd.getText().toString();
        if( u.equals( p ) )
            Toast.makeText(getApplicationContext(), "Matches", Toast.LENGTH_SHORT).show();
        else
            Toast.makeText(getApplicationContext(), user.getText()+" != "+pwd.getText(), Toast.LENGTH_SHORT).show();
    }
}

原始答案(由于缺少toString()而无法正常工作)

尝试使用.getText()而不是.toString()。

if( passw1.getText() == passw2.getText() )
#do something

.toString()返回整个对象的String表示,这意味着它不会返回您在字段中输入的文本(通过添加Toast来显示.toString()的输出)

答案 2 :(得分:5)

在onclik函数中用这一行替换第一行你一定会得到正确的结果。

if(passw1.getText()。toString()。equalsIgnoreCase(“1234”)&& passw2.getText()。toString()。equalsIgnoreCase(“1234”)){

答案 3 :(得分:3)

您可以使用Java的equals()比较值:

public void onClick(View v) {
    // TODO Auto-generated method stub

    s1=text1.getText().toString();
    s2=text2.getText().toString();

    if(s1.equals(s2))
        Show.setText("Are Equal");
    else
        Show.setText("Not Equal");
}

答案 4 :(得分:2)

你需要getText() - 它返回一个Editable和toString() - 将它转换为String进行匹配。 所以而不是:passw1.toString().equalsIgnoreCase("1234") 你需要passw1.getText().toString().equalsIgnoreCase("1234")

答案 5 :(得分:1)

您可以使用String.compareTo(String)返回一个负数(<),零(=)或正数(>)的整数。

使用它:

您可以使用 String.compareTo(String)返回一个负数(<),零(=)或正数(>)的整数。

使用它:

  String a="myWord";
  if(a.compareTo(another_string) <0){
    //a is strictly < to another_string
  }
  else if (a.compareTo(another_string) == 0){
    //a equals to another_string
  }
else{
  // a is strictly > than another_string
}    

答案 6 :(得分:0)

首先尝试在.trim()之前使用.equals(),或者创建一个包含这些内容的新String var。

答案 7 :(得分:0)

在这里做同样的事情需要两次显示“成功” 响应是来自PHP的数据

 String res=response.toString().trim;

                            Toast.makeText(sign_in.this,res,Toast.LENGTH_SHORT).show();
    if ( res.compareTo("success")==0){
    Toast.makeText(this,res,Toast.LENGTH_SHORT).show();
    }