Android EditText检查帮助

时间:2012-05-01 13:35:30

标签: java android

我有一个editText字段,我想检查它是否符合某些条件,基本上它必须包含2ints和3个字符串,如何在添加元素之前检查它。

 EditText.getText().toString();

我可以添加一个类似这样的检查

public boolean checkString(String StringPassed) {

   String s = StringPassed;
if(s.length == 5){
  boolean hasString = false;
  boolean hasInt = false;
  String letters = s.substring(0, 2);
  Pattern p = Pattern.compile("[a-zA-Z]");
  Matcher m = p.matcher(letters);
  if (m.matches()) {
    hasString = true;
  }
  String numbers=s.substring(2,5);
  try {
    int num = Integer.parseInt(numbers);
    String n = num + "";
    if (num > 0 && n.length() == 3)
        hasInt = true;
  } catch (Exception e) {
  }
  if (hasInt && hasString) {
   return true;
  }
 }else{
  return false;
 }
return false;
}

然后我有一个方法会说

public void addString() {

String StringPassed =  EditTextName.getString().toString();
checkString(String StringPassed);

if (StringPassed() == false) {
Display Toast;
}
else {
      add;
     }
}

4 个答案:

答案 0 :(得分:1)

    String s = edittext.gettext();
    if(s.length == 5){
      boolean hasString = false;
      boolean hasInt = false;
      String letters = s.substring(0, 2);
      Pattern p = Pattern.compile("^[a-zA-Z]+$");
      Matcher m = p.matcher(letters);
      if (m.matches()) {
        hasString = true;
      }
      String numbers=s.substring(2,5);
      try {
        int num = Integer.parseInt(numbers);
        String n = num + "";
        if (num > 0 && n.length() == 3)
            hasInt = true;
      } catch (Exception e) {
      }
      if (hasInt && hasString) {
        //success
      }
     }else{
      // incorrect string
     }

另外,您可以在TextWatcher上添加edittext来监听文字输入更改并自动调用您的方法

答案 1 :(得分:0)

我不知道是否有任何内置的解决方案,但是你可以遍历字符串并制作一个正则表达式来检查给定字符是否为整数?

可能是这样的:

Boolean isInteger = Pattern.matches("\d", text.toString()); ?

答案 2 :(得分:0)

我们可以实施

edittext.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(View v , int keyCode , KeyEvent event) {

            // TODO Auto-generated method stub
            if (keyCode == // Test whether a Number or Alphabet) {

                // Increase the tag here
            }

            return false;
        }
    });

但我认为必须有一些隐含的功能,我仍在搜索。

答案 3 :(得分:0)

您可以使用Regular ExpressionThis是使用正则表达式验证字符串是否为特定格式的一个很好的示例。以下是来自this question的代码,用于验证字符串是[a-z] [a-z] [0-9] [0-9] [0,9]。

package com.ruralogic.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class RegexActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        String regex ="[a-z][a-z][0-9][0-9][0-9]";
        TextView text1 = (TextView)findViewById(R.id.text1);
        TextView text2 = (TextView)findViewById(R.id.text2);
        if(IsMatch("123ab",regex)){
            text1.setText("true");
        }else{
            text1.setText("false");
        }
        if(IsMatch("ab123",regex)){
            text2.setText("true");
        }else{
            text2.setText("false");
        }
    }

    private static boolean IsMatch(String s, String pattern) {
        try {
            Pattern patt = Pattern.compile(pattern);
            Matcher matcher = patt.matcher(s);
            return matcher.matches();
        } catch (RuntimeException e) {
            return false;
        }
    }
}