我正在尝试将文本输出传递给正则表达式方法,我可以将整个文本输出并提取出电子邮件地址。
例如,我的文本输出如下:
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);
}
}
我想做的是:
EmailValidator()
(不确定我是否正确)EmailValidator()
获取输出并将其传递给setupUI()
(未完成)哪里出错了?传递文本输出还是正则表达式方法?任何想法请提供。感谢~~
答案 0 :(得分:1)
您没有将返回值分配给textToUse
textToUse= EmailValidator();