0

我有一个 editText 字段,我想检查它是否符合某些条件,基本上它必须包含 2 个整数和 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

4 回答 4

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以侦听文本输入更改并自动调用您的方法

于 2012-05-01T13:55:11.977 回答
0

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

也许是这样的:

Boolean isInteger = Pattern.matches("\d", text.toString()); ?
于 2012-05-01T13:49:13.797 回答
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;
        }
    });

但我认为必须有一些隐式功能,我仍在寻找。

于 2012-05-01T13:49:44.943 回答
0

您可以使用正则表达式是使用正则表达式验证字符串是否为特定格式的一个很好的示例。下面是这个问题的代码,用于验证字符串是否为 [az] [az] [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;
        }
    }
}
于 2012-05-01T14:01:13.517 回答