0

特定の基準を満たしていることを確認したい editText フィールドがあります。基本的には 2int と 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
     }

また、にを追加しTextWatcheredittext、テキスト入力の変更をリッスンし、メソッドを自動的に呼び出すことができます

于 2012-05-01T13:55:11.977 に答える
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 に答える
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 に答える