Android:通过Regex方法传递文本,并在EditText上显示

时间:2016-01-22 09:32:48

标签: java android regex android-intent android-edittext

我正在尝试将文本输出传递给正则表达式方法,我可以将整个文本输出并提取出电子邮件地址。

例如,我的文本输出如下:

Genos Taper
Assitant Manager

90606968
genostaper@hotmail.com

我想将上面的文本输出传递给正则表达式方法并提取出“genostaper@hotmail.com”并显示为EditText。

以下是我的代码:

public class CreateContactActivityOCRtest extends Activity {

private String recognizedText, textToUse;
private EditText mEditText1, mEditText2;
private String mFromLang, mCurrentLang;

private Pattern pattern;
private Matcher matcher;

private static final String EMAIL_PATTERN =
        "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
                + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_createcontact);

    // Getting the path of the image to show
    Bundle extras = this.getIntent().getExtras();
    recognizedText = extras.getString("TEXT");
    textToUse = recognizedText;

    // Getting the language used for text recognition
    mFromLang = extras.getString("LANG");
    mCurrentLang = mFromLang;
    //Log.i(TAG, mFromLang);

    textToUse = EmailValidator();
    setupUI();
}

public String EmailValidator() {

    String email = textToUse;

    Pattern pattern = Pattern.compile(EMAIL_PATTERN);
    Matcher matcher = pattern.matcher(email);

    if (matcher.find()) {
        return email.substring(matcher.start(), matcher.end());

    } else {
        // TODO handle condition when input doesn't have an email address
    }

    return email;

}

public boolean validate(final String hex) {

    matcher = pattern.matcher(hex);
    return matcher.matches();

}

public void setupUI(){

    // Setting up the textbox

    mEditText1 = (EditText)findViewById(R.id.EmailET);
    mEditText2 = (EditText)findViewById(R.id.role);
    mEditText1.setText(textToUse);
    mEditText2.setText(textToUse);

}

}

我想做的是:

  1. 接收其他课程的文字输出(已完成
  2. 将整个文字输出传递到EmailValidator()不确定我是否正确
  3. EmailValidator()获取输出并将其传递给setupUI()未完成
  4. 哪里出错了?传递文本输出还是正则表达式方法?任何想法请提供。感谢~~

1 个答案:

答案 0 :(得分:1)

您没有将返回值分配给textToUse

textToUse= EmailValidator();